home *** CD-ROM | disk | FTP | other *** search
/ Magazyn WWW 1999 July / www_07_1999.iso / prog / mac / alpha / alpha.hqx / Alpha ƒ / Help / Tcl Commands < prev    next >
Text File  |  1998-03-02  |  173KB  |  4,116 lines

  1.  
  2.  
  3.  
  4.                     Tcl Built-In Commands
  5.  
  6.  
  7.  
  8. _________________________________________________________________
  9.  
  10. NAME
  11.      Tcl - Summary of Tcl language syntax.
  12. _________________________________________________________________
  13.  
  14.  
  15. DESCRIPTION
  16.      The following rules define the syntax and semantics  of  the
  17.      Tcl language:
  18.  
  19.      [1]  A Tcl script is a string containing one  or  more  com-
  20.           mands.  Semi-colons and newlines are command separators
  21.           unless quoted as described below.  Close  brackets  are
  22.           command  terminators  during  command substitution (see
  23.           below) unless quoted.
  24.  
  25.      [2]  A command is evaluated in two steps.   First,  the  Tcl
  26.           interpreter  breaks the command into words and performs
  27.           substitutions as described below.  These  substitutions
  28.           are  performed  in  the same way for all commands.  The
  29.           first word is used to locate  a  command  procedure  to
  30.           carry  out  the  command,  then all of the words of the
  31.           command are passed to the command procedure.  The  com-
  32.           mand  procedure  is free to interpret each of its words
  33.           in any way it likes, such as an integer, variable name,
  34.           list,  or  Tcl  script.   Different  commands interpret
  35.           their words differently.
  36.  
  37.      [3]  Words of a command are separated by white space (except
  38.           for newlines, which are command separators).
  39.  
  40.      [4]  If the  first  character  of  a  word  is  double-quote
  41.           (``"'')  then  the  word  is  terminated  by  the  next
  42.           double-quote character.  If semi-colons,  close  brack-
  43.           ets,  or  white  space  characters (including newlines)
  44.           appear between the quotes  then  they  are  treated  as
  45.           ordinary  characters and included in the word.  Command
  46.           substitution, variable substitution, and backslash sub-
  47.           stitution  are  performed on the characters between the
  48.           quotes as described below.  The double-quotes  are  not
  49.           retained as part of the word.
  50.  
  51.      [5]  If the first character of  a  word  is  an  open  brace
  52.           (``{'')  then  the  word  is terminated by the matching
  53.           close brace (``}'').  Braces nest within the word:  for
  54.           each  additional open brace there must be an additional
  55.           close brace (however, if an open brace or  close  brace
  56.           within  the  word is quoted with a backslash then it is
  57.           not counted in locating the matching close brace).   No
  58.           substitutions  are  performed on the characters between
  59.           the braces except for  backslash-newline  substitutions
  60.           described  below,  nor  do semi-colons, newlines, close
  61.           brackets, or white space receive any special  interpre-
  62.           tation.   The  word will consist of exactly the charac-
  63.           ters between the outer braces, not including the braces
  64.           themselves.
  65.  
  66.      [6]  If a word contains an open  bracket  (``['')  then  Tcl
  67.           performs  command  substitution.  To do this it invokes
  68.           the Tcl interpreter recursively to process the  charac-
  69.           ters  following  the open bracket as a Tcl script.  The
  70.           script may contain any number of commands and  must  be
  71.           terminated  by  a close bracket (``]'').  The result of
  72.           the script (i.e. the result of  its  last  command)  is
  73.           substituted  into the word in place of the brackets and
  74.           all of the characters between them.  There may  be  any
  75.           number of command substitutions in a single word.  Com-
  76.           mand substitution is not performed on words enclosed in
  77.           braces.
  78.  
  79.      [7]  If a word contains a dollar-sign (``$'') then Tcl  per-
  80.           forms  variable  substitution:  the dollar-sign and the
  81.           following characters are replaced in the  word  by  the
  82.           value  of a variable.  Variable substition may take any
  83.           of the following forms:
  84.  
  85.           $name          Name is the name of a  scalar  variable;
  86.                          the  name is terminated by any character
  87.                          that isn't a letter,  digit,  or  under-
  88.                          score.
  89.  
  90.           $name(index)   Name gives the name of an array variable
  91.                          and  index  gives the name of an element
  92.                          within that array.   Name  must  contain
  93.                          only  letters,  digits, and underscores.
  94.                          Command substitutions, variable  substi-
  95.                          tutions, and backslash substitutions are
  96.                          performed on the characters of index.
  97.  
  98.           ${name}        Name is the name of a  scalar  variable.
  99.                          It may contain any characters whatsoever
  100.                          except for close braces.
  101.  
  102.      There may be any number of variable substitutions in a  sin-
  103.      gle  word.   Variable substitution is not performed on words
  104.      enclosed in braces.
  105.  
  106.      [8]  If a backslash  (``\'')  appears  within  a  word  then
  107.           backslash  substitution occurs.  In all cases but those  |
  108.           described below the backslash is dropped and  the  fol-  |
  109.           lowing  character  is  treated as an ordinary character  |
  110.           and included in the word.  This allows characters  such
  111.           as  double  quotes, close brackets, and dollar signs to
  112.           be included in words without  triggering  special  pro-
  113.           cessing.   The  following  table  lists  the  backslash
  114.           sequences that are handled specially,  along  with  the
  115.           value that replaces each sequence.
  116.  
  117.           \a                                                            ||
  118.                 Audible alert (bell) (0x7).
  119.  
  120.           \b    Backspace (0x8).
  121.  
  122.           \f    Form feed (0xc).
  123.  
  124.           \n    Newline (0xa).
  125.  
  126.           \r    Carriage-return (0xd).
  127.  
  128.           \t    Tab (0x9).
  129.  
  130.           \v    Vertical tab (0xb).
  131.  
  132.           \<newline>whiteSpace
  133.                 A single space character replaces the  backslash,  |
  134.                 newline,  and  all white space after the newline.  |
  135.                 This backslash sequence is unique in that  it  is  |
  136.                 replaced  in  a separate pre-pass before the com-  |
  137.                 mand is actually parsed.  This means that it will  |
  138.                 be  replaced  even when it occurs between braces,  |
  139.                 and the resulting space will be treated as a word  |
  140.                 separator if it isn't in braces or quotes.
  141.  
  142.           \\    Backslash (``\'').
  143.  
  144.           \ooo  The digits ooo (one, two, or three of them)  give
  145.                 the octal value of the character.
  146.  
  147.           \xhh  The hexadecimal digits hh  give  the  hexadecimal  |
  148.                 value of the character.  Any number of digits may  |
  149.                 be present.
  150.  
  151.      Backslash substitution is not performed on words enclosed in
  152.      braces, except for backslash-newline as described above.
  153.  
  154.      [9]  If a hash character (``#'') appears at  a  point  where
  155.           Tcl  is expecting the first character of the first word
  156.           of a command, then the hash character and  the  charac-
  157.           ters  that  follow it, up through the next newline, are
  158.           treated as a comment and ignored.  The comment  charac-
  159.           ter only has significance when it appears at the begin-
  160.           ning of a command.
  161.  
  162.      [10] Each character is processed exactly  once  by  the  Tcl
  163.           interpreter as part of creating the words of a command.
  164.  
  165.           For example, if  variable  substition  occurs  then  no
  166.           further  substitions  are performed on the value of the
  167.           variable;  the value is inserted into the  word  verba-
  168.           tim.   If  command  substitution occurs then the nested
  169.           command is processed entirely by the recursive call  to
  170.           the  Tcl  interpreter;  no  substitutions  are perfomed
  171.           before making the recursive call and no additional sub-
  172.           stitutions  are  performed  on the result of the nested
  173.           script.
  174.  
  175.      [11] Substitutions do not affect the word  boundaries  of  a
  176.           command.  For example, during variable substitution the
  177.           entire value of the variable becomes part of  a  single
  178.           word, even if the variable's value contains spaces.
  179.  
  180.  
  181.  
  182. Tcl                      Last change:                           4
  183.  
  184.  
  185.  
  186. _________________________________________________________________
  187.  
  188. NAME
  189.      append - Append to variable
  190.  
  191. SYNOPSIS
  192.      append varName value ?value value ...?
  193. _________________________________________________________________
  194.  
  195.  
  196. DESCRIPTION
  197.      Append all of the value arguments to the  current  value  of
  198.      variable  varName.   If varName doesn't exist, it is given a
  199.      value equal to the concatenation of all the value arguments.
  200.      This  command  provides  an  efficient  way to build up long
  201.      variables incrementally.  For example, ``append  a  $b''  is
  202.      much more efficient than ``set a $a$b'' if $a is long.
  203.  
  204.  
  205. KEYWORDS
  206.      append, variable
  207.  
  208.  
  209. _________________________________________________________________
  210.  
  211. NAME
  212.      array - Manipulate array variables
  213.  
  214. SYNOPSIS
  215.      array option arrayName ?arg arg ...?
  216. _________________________________________________________________
  217.  
  218.  
  219. DESCRIPTION
  220.      This command performs one of several operations on the vari-
  221.      able  given  by arrayName.  ArrayName must be the name of an
  222.      existing array variable.   The  option  argument  determines
  223.      what  action  is  carried  out  by  the  command.  The legal
  224.      options (which may be abbreviated) are:
  225.  
  226.      array anymore arrayName searchId
  227.           Returns 1 if there are any more  elements  left  to  be
  228.           processed  in  an  array search, 0 if all elements have
  229.           already been returned.  SearchId indicates which search
  230.           on  arrayName  to  check, and must have been the return
  231.           value from a previous invocation of array  startsearch.
  232.           This  option  is particularly useful if an array has an
  233.           element with an empty name, since the return value from
  234.           array nextelement won't indicate whether the search has
  235.           been completed.
  236.  
  237.      array donesearch arrayName searchId
  238.           This command terminates an array  search  and  destroys
  239.           all  the  state  associated with that search.  SearchId
  240.           indicates which search on  arrayName  to  destroy,  and
  241.           must have been the return value from a previous invoca-
  242.           tion of array startsearch.  Returns an empty string.
  243.  
  244.      array names arrayName
  245.           Returns a list containing the names of all of the  ele-
  246.           ments  in  the  array.  If there are no elements in the
  247.           array then an empty string is returned.
  248.  
  249.      array nextelement arrayName searchId
  250.           Returns the name of the next element in  arrayName,  or
  251.           an  empty  string  if  all  elements  of arrayName have
  252.           already been returned in  this  search.   The  searchId
  253.           argument  identifies the search, and must have been the
  254.           return value of an array startsearch command.  Warning:
  255.           if  elements  are  added  to or deleted from the array,
  256.           then all searches are automatically terminated just  as
  257.           if  array  donesearch had been invoked; this will cause
  258.           array  nextelement  operations  to   fail   for   those
  259.           searches.
  260.  
  261.      array size arrayName
  262.           Returns a decimal string giving the number of  elements
  263.           in the array.
  264.  
  265.      array startsearch arrayName
  266.           This command initializes an  element-by-element  search
  267.           through the array given by arrayName, such that invoca-
  268.           tions of the array nextelement command will return  the
  269.           names  of  the  individual elements in the array.  When
  270.           the search has been  completed,  the  array  donesearch
  271.           command  should  be  invoked.   The  return  value is a
  272.           search identifier that must be used in  array  nextele-
  273.           ment  and array donesearch commands; it allows multiple
  274.           searches to be underway  simultaneously  for  the  same
  275.           array.
  276.  
  277.  
  278. KEYWORDS
  279.      array, element names, search
  280.  
  281.  
  282. _________________________________________________________________
  283.  
  284. NAME
  285.      break - Abort looping command
  286.  
  287. SYNOPSIS
  288.      break
  289. _________________________________________________________________
  290.  
  291.  
  292. DESCRIPTION
  293.      This command may be invoked only inside the body of a  loop-
  294.      ing  command  such as for or foreach or while.  It returns a
  295.      TCL_BREAK code to signal the innermost containing loop  com-
  296.      mand to return immediately.
  297.  
  298.  
  299. KEYWORDS
  300.      abort, break, loop
  301.  
  302.  
  303. _________________________________________________________________
  304.  
  305. NAME
  306.      case - Evaluate one of several scripts, depending on a given
  307.      value
  308.  
  309. SYNOPSIS
  310.      case string ?in? patList body ?patList body ...?
  311.      case string ?in? {patList body ?patList body ...?}
  312. _________________________________________________________________
  313.  
  314.  
  315. DESCRIPTION
  316.      Note: the case command is obsolete and is supported only for
  317.      backward  compatibility.  At some point in the future it may
  318.      be removed entirely.  You  should  use  the  switch  command
  319.      instead.
  320.  
  321.      The case command matches string against each of the  patList
  322.      arguments  in order.  Each patList argument is a list of one
  323.      or more patterns.  If any of these patterns  matches  string
  324.      then  case  evaluates the following body argument by passing
  325.      it recursively to the Tcl interpreter and returns the result
  326.      of  that  evaluation.   Each  patList argument consists of a
  327.      single pattern or list of patterns.  Each pattern  may  con-
  328.      tain any of the wild-cards described under string match.  If
  329.      a patList argument is default, the corresponding  body  will
  330.      be  evaluated  if  no patList matches string.  If no patList
  331.      argument matches string and no default is  given,  then  the
  332.      case command returns an empty string.
  333.  
  334.      Two syntaxes are provided for the  patList  and  body  argu-
  335.      ments.   The  first uses a separate argument for each of the
  336.      patterns and commands; this form is convenient if  substitu-
  337.      tions  are desired on some of the patterns or commands.  The
  338.      second form places all of the patterns and commands together
  339.      into  a  single argument; the argument must have proper list
  340.      structure, with the elements of the list being the  patterns
  341.      and  commands.   The  second form makes it easy to construct
  342.      multi-line case commands, since the braces around the  whole
  343.      list  make  it unnecessary to include a backslash at the end
  344.      of each line.  Since the patList arguments are in braces  in
  345.      the  second  form,  no command or variable substitutions are
  346.      performed on them;  this makes the behavior  of  the  second
  347.      form different than the first form in some cases.
  348.  
  349.  
  350. KEYWORDS
  351.      case, match, regular expression
  352.  
  353.  
  354. _________________________________________________________________
  355.  
  356. NAME
  357.      catch - Evaluate script and trap exceptional returns
  358.  
  359. SYNOPSIS
  360.      catch script ?varName?
  361. _________________________________________________________________
  362.  
  363.  
  364. DESCRIPTION
  365.      The catch command may be used to prevent errors from  abort-
  366.      ing command interpretation.  Catch calls the Tcl interpreter
  367.      recursively to execute script, and always returns  a  TCL_OK
  368.      code,  regardless  of any errors that might occur while exe-
  369.      cuting script.  The return value from  catch  is  a  decimal
  370.      string giving the code returned by the Tcl interpreter after
  371.      executing script.  This will be 0 (TCL_OK) if there were  no
  372.      errors  in  script;  otherwise it will have a non-zero value
  373.      corresponding to one of the exceptional  return  codes  (see
  374.      tcl.h  for  the definitions of code values).  If the varName
  375.      argument is given, then it gives the  name  of  a  variable;
  376.      catch  will  set  the  variable  to the string returned from
  377.      script (either a result or an error message).
  378.  
  379.  
  380. KEYWORDS
  381.      catch, error
  382.  
  383.  
  384. _________________________________________________________________
  385.  
  386. NAME
  387.      cd - Change working directory
  388.  
  389. SYNOPSIS
  390.      cd ?dirName?
  391. _________________________________________________________________
  392.  
  393.  
  394. DESCRIPTION
  395.      Change the current working directory to dirName, or  to  the
  396.      home  directory  (as specified in the HOME environment vari-
  397.      able) if dirName is not given.  If  dirName  starts  with  a
  398.      tilde,   then  tilde-expansion  is  done  as  described  for
  399.      Tcl_TildeSubst.  Returns an empty string.
  400.  
  401.  
  402. KEYWORDS
  403.      working directory
  404.  
  405.  
  406. _________________________________________________________________
  407.  
  408. NAME
  409.      close - Close an open file
  410.  
  411. SYNOPSIS
  412.      close fileId
  413. _________________________________________________________________
  414.  
  415.  
  416. DESCRIPTION
  417.      Closes the file given by fileId.  FileId must be the  return
  418.      value  from a previous invocation of the open command; after
  419.      this command, it should not  be  used  anymore.   If  fileId
  420.      refers  to  a command pipeline instead of a file, then close
  421.      waits for the children to complete.  The  normal  result  of
  422.      this  command is an empty string, but errors are returned if
  423.      there are problems in closing the file or waiting for  chil-
  424.      dren to complete.
  425.  
  426.  
  427. KEYWORDS
  428.      close, file
  429.  
  430.  
  431. _________________________________________________________________
  432.  
  433. NAME
  434.      concat - Join lists together
  435.  
  436. SYNOPSIS
  437.      concat ?arg arg ...?                                          |
  438. _________________________________________________________________
  439.  
  440.  
  441. DESCRIPTION
  442.      This command treats each argument as a list and concatenates
  443.      them  into  a  single  list.  It also eliminates leading and
  444.      trailing spaces in the arg's and  adds  a  single  separator
  445.      space  between  arg's.   It permits any number of arguments.
  446.      For example, the command
  447.  
  448.           concat a b {c d e} {f {g h}}
  449.      will return
  450.  
  451.           a b c d e f {g h}
  452.      as its result.
  453.  
  454.      If no args are supplied, the result is an empty string.       |
  455.  
  456.  
  457. KEYWORDS
  458.      concatenate, join, lists
  459.  
  460.  
  461. _________________________________________________________________
  462.  
  463. NAME
  464.      continue - Skip to the next iteration of a loop
  465.  
  466. SYNOPSIS
  467.      continue
  468. _________________________________________________________________
  469.  
  470.  
  471. DESCRIPTION
  472.      This command may be invoked only inside the body of a  loop-
  473.      ing  command  such as for or foreach or while.  It returns a
  474.      TCL_CONTINUE code to signal the  innermost  containing  loop
  475.      command  to  skip  the remainder of the loop's body but con-
  476.      tinue with the next iteration of the loop.
  477.  
  478.  
  479. KEYWORDS
  480.      continue, iteration, loop
  481.  
  482.  
  483. _________________________________________________________________
  484.  
  485. NAME
  486.      eof - Check for end-of-file condition on open file
  487.  
  488. SYNOPSIS
  489.      eof fileId
  490. _________________________________________________________________
  491.  
  492.  
  493. DESCRIPTION
  494.      Returns 1  if  an  end-of-file  condition  has  occurred  on
  495.      fileId, 0 otherwise.  FileId must have been the return value
  496.      from a previous call to open, or it may be stdin, stdout, or
  497.      stderr to refer to one of the standard I/O channels.
  498.  
  499.  
  500. KEYWORDS
  501.      end, file
  502.  
  503.  
  504. _________________________________________________________________
  505.  
  506. NAME
  507.      error - Generate an error
  508.  
  509. SYNOPSIS
  510.      error message ?info? ?code?
  511. _________________________________________________________________
  512.  
  513.  
  514. DESCRIPTION
  515.      Returns a TCL_ERROR code, which causes  command  interpreta-
  516.      tion to be unwound.  Message is a string that is returned to
  517.      the application to indicate what went wrong.
  518.  
  519.      If the info argument is provided and  is  non-empty,  it  is
  520.      used to initialize the global variable errorInfo.  errorInfo
  521.      is used to accumulate a stack trace of what was in  progress
  522.      when  an  error occurred; as nested commands unwind, the Tcl
  523.      interpreter adds information  to  errorInfo.   If  the  info
  524.      argument  is present, it is used to initialize errorInfo and
  525.      the first increment of unwind information will not be  added
  526.      by  the  Tcl  interpreter.  In other words, the command con-
  527.      taining the error command will not appear in  errorInfo;  in
  528.      its place will be info.  This feature is most useful in con-
  529.      junction with the catch command: if a caught error cannot be
  530.      handled  successfully,  info  can  be used to return a stack
  531.      trace reflecting the original point  of  occurrence  of  the
  532.      error:
  533.  
  534.           catch {...} errMsg
  535.           set savedInfo $errorInfo
  536.           ...
  537.           error $errMsg $savedInfo
  538.  
  539.      If the code argument is present, then its value is stored in
  540.      the errorCode global variable.  This variable is intended to
  541.      hold a machine-readable description of the  error  in  cases
  542.      where  such information is available; see the section BUILT-
  543.      IN VARIABLES below for information on the proper format  for
  544.      the  variable.   If  the  code argument is not present, then
  545.      errorCode is automatically reset  to  ``NONE''  by  the  Tcl
  546.      interpreter as part of processing the error generated by the
  547.      command.
  548.  
  549.  
  550. KEYWORDS
  551.      error, errorCode, errorInfo
  552.  
  553.  
  554. _________________________________________________________________
  555.  
  556. NAME
  557.      eval - Evaluate a Tcl script
  558.  
  559. SYNOPSIS
  560.      eval arg ?arg ...?
  561. _________________________________________________________________
  562.  
  563.  
  564. DESCRIPTION
  565.      Eval takes one or more arguments, which together comprise  a
  566.      Tcl  script containing one or more commands.  Eval concaten-
  567.      ates all its arguments in the same  fashion  as  the  concat
  568.      command,  passes  the  concatenated string to the Tcl inter-
  569.      preter recursively, and returns the result of  that  evalua-
  570.      tion (or any error generated by it).
  571.  
  572.  
  573. KEYWORDS
  574.      concatenate, evaluate, script
  575.  
  576.  
  577. _________________________________________________________________
  578.  
  579. NAME
  580.      exec - Invoke subprocess(es)
  581.  
  582. SYNOPSIS
  583.      exec ?switches? arg ?arg ...?
  584. _________________________________________________________________
  585.  
  586.  
  587. DESCRIPTION
  588.      This command treats its arguments as  the  specification  of
  589.      one or more subprocesses to execute.  The arguments take the
  590.      form of a standard shell pipeline where each arg becomes one
  591.      word  of a command, and each distinct command becomes a sub-
  592.      process.
  593.  
  594.      If the initial arguments to exec start with - then they  are  |
  595.      treated  as  command-line  switches  and are not part of the  |
  596.      pipeline  specification.    The   following   switches   are  |
  597.      currently supported:                                          |
  598.  
  599.      -keepnew-  |
  600.                   line                                                       ||
  601.                   Retains a trailing newline  in  the  pipeline's  |
  602.                   output.   Normally  a  trailing newline will be  |
  603.                   deleted.                                         |
  604.  
  605.      --                                                                 ||
  606.                   Marks  the  end of switches.  The argument fol-  |
  607.                   lowing this one will be treated  as  the  first  |
  608.                   arg even if it starts with a -.
  609.  
  610.      If an arg (or pair of arg's) has one of the forms  described
  611.      below  then  it is used by exec to control the flow of input
  612.      and output among the subprocess(es).   Such  arguments  will
  613.      not  be  passed to the subprocess(es).  In forms such as ``<  |
  614.      fileName'' fileName may either be  in  a  separate  argument  |
  615.      from ``<'' or in the same argument with no intervening space  |
  616.      (i.e. ``<fileName'').
  617.  
  618.      |              Separates distinct commands in the  pipeline.
  619.                     The  standard output of the preceding command
  620.                     will be piped into the standard input of  the
  621.                     next command.
  622.  
  623.      |&             Separates distinct commands in the  pipeline.
  624.                     Both  standard  output  and standard error of
  625.                     the preceding command will be piped into  the
  626.                     standard  input  of  the  next command.  This
  627.                     form of redirection overrides forms  such  as
  628.                     2> and >&.
  629.  
  630.      < fileName     The file named by fileName is opened and used
  631.                     as  the  standard input for the first command
  632.                     in the pipeline.
  633.  
  634.      <@ fileId      FileId must be the  identifier  for  an  open  |
  635.                     file,  such as the return value from a previ-  |
  636.                     ous call to open.  It is used as the standard  |
  637.                     input  for the first command in the pipeline.  |
  638.                     FileId must have been opened for reading.
  639.  
  640.      << value       Value is passed to the first command  as  its
  641.                     standard input.
  642.  
  643.      > fileName     Standard output  from  the  last  command  is
  644.                     redirected   to   the  file  named  fileName,
  645.                     overwriting its previous contents.
  646.  
  647.      2> fileName    Standard error from all commands in the pipe-  |
  648.                     line   is   redirected   to  the  file  named  |
  649.                     fileName, overwriting its previous contents.   |
  650.  
  651.      >& fileName                                                        ||
  652.                     Both  standard  output  from the last command  |
  653.                     and standard  error  from  all  commands  are  |
  654.                     redirected   to   the  file  named  fileName,  |
  655.                     overwriting its previous contents.
  656.  
  657.      >> fileName    Standard output  from  the  last  command  is
  658.                     redirected   to   the  file  named  fileName,
  659.                     appending to it rather than overwriting it.
  660.  
  661.      2>> fileName   Standard error from all commands in the pipe-  |
  662.                     line   is   redirected   to  the  file  named  |
  663.                     fileName,  appending  to   it   rather   than  |
  664.                     overwriting it.                                |
  665.  
  666.      >>& fileName                                                       ||
  667.                     Both  standard  output  from the last command  |
  668.                     and standard  error  from  all  commands  are  |
  669.                     redirected   to   the  file  named  fileName,  |
  670.                     appending to it rather than overwriting it.    |
  671.  
  672.      >@ fileId                                                          ||
  673.                     FileId  must  be  the  identifier for an open  |
  674.                     file, such as the return value from a  previ-  |
  675.                     ous  call  to open.  Standard output from the  |
  676.                     last command is redirected to fileId's  file,  |
  677.                     which must have been opened for writing.       |
  678.  
  679.      2>@ fileId                                                         ||
  680.                     FileId  must  be  the  identifier for an open  |
  681.                     file,  such  as  the  return  value  from   a  |
  682.                     previous  call  to open.  Standard error from  |
  683.                     all commands in the pipeline is redirected to  |
  684.                     fileId's  file.   The  file  must  have  been  |
  685.                     opened for writing.                            |
  686.  
  687.      >&@ fileId                                                         ||
  688.                     FileId  must  be  the  identifier for an open  |
  689.                     file, such as the return value from a  previ-  |
  690.                     ous  call to open.  Both standard output from  |
  691.                     the last command and standard error from  all  |
  692.                     commands  are  redirected  to  fileId's file.  |
  693.                     The file must have been opened for writing.
  694.  
  695.      If standard output has not been  redirected  then  the  exec
  696.      command returns the standard output from the last command in
  697.      the pipeline.  If any of the commands in the  pipeline  exit
  698.      abnormally or are killed or suspended, then exec will return
  699.      an error and the error message will include  the  pipeline's
  700.      output  followed  by  error messages describing the abnormal
  701.      terminations; the errorCode variable will contain additional
  702.      information about the last abnormal termination encountered.
  703.      If any of the commands writes to its standard error file and
  704.      that  standard error isn't redirected, then exec will return
  705.      an error;  the error message  will  include  the  pipeline's
  706.      standard  output, followed by messages about abnormal termi-
  707.      nations (if any), followed by the standard error output.
  708.  
  709.      If the last character of the result or error  message  is  a
  710.      newline  then  that  character  is normally deleted from the
  711.      result or error message.  This is consistent with other  Tcl
  712.      return values, which don't normally end with newlines.  How-  |
  713.      ever, if -keepnewline is specified then the trailing newline  |
  714.      is retained.
  715.  
  716.      If standard input isn't redirected with ``<'' or  ``<<''  or
  717.      ``<@''  then the standard input for the first command in the
  718.      pipeline is taken from the  application's  current  standard
  719.      input.
  720.  
  721.      If the last arg is ``&'' then the pipeline will be  executed
  722.      in  background.  In this case the exec command will return a  |
  723.      list whose elements are the process identifiers for  all  of  |
  724.      the  subprocesses in the pipeline.  The standard output from
  725.      the  last  command  in  the  pipeline   will   go   to   the
  726.      application's  standard output if it hasn't been redirected,
  727.      and error output from all of the commands  in  the  pipeline
  728.      will  go  to  the  application's  standard error file unless
  729.      redirected.
  730.  
  731.      The first word in each command is taken as the command name;
  732.      tilde-substitution  is  performed  on  it, and if the result
  733.      contains  no  slashes  then  the  directories  in  the  PATH
  734.      environment  variable  are searched for an executable by the
  735.      given name.  If the name contains a slash then it must refer
  736.      to  an  executable reachable from the current directory.  No
  737.      ``glob'' expansion or  other  shell-like  substitutions  are
  738.      performed on the arguments to commands.
  739.  
  740.  
  741. KEYWORDS
  742.      execute, pipeline, redirection, subprocess
  743.  
  744.  
  745. _________________________________________________________________
  746.  
  747. NAME
  748.      exit - End the application
  749.  
  750. SYNOPSIS
  751.      exit ?returnCode?
  752. _________________________________________________________________
  753.  
  754.  
  755. DESCRIPTION
  756.      Terminate the process, returning returnCode to the system as
  757.      the  exit  status.   If  returnCode  isn't specified then it
  758.      defaults to 0.
  759.  
  760.  
  761. KEYWORDS
  762.      exit, process
  763.  
  764.  
  765. _________________________________________________________________
  766.  
  767. NAME
  768.      expr - Evalue an expression
  769.  
  770. SYNOPSIS
  771.      expr arg ?arg arg ...?
  772. _________________________________________________________________
  773.  
  774.  
  775. DESCRIPTION
  776.      Concatenates arg's (adding separator spaces  between  them),  |
  777.      evaluates  the  result  as a Tcl expression, and returns the  |
  778.      value.  The operators permitted in  Tcl  expressions  are  a
  779.      subset of the operators permitted in C expressions, and they
  780.      have the same meaning and precedence as the corresponding  C
  781.      operators.   Expressions almost always yield numeric results
  782.      (integer  or  floating-point  values).   For  example,   the
  783.      expression
  784.  
  785.           expr 8.2 + 6
  786.      evaluates to 14.2.  Tcl expressions differ  from  C  expres-
  787.      sions  in  the  way  that operands are specified.  Also, Tcl
  788.      expressions support non-numeric  operands  and  string  com-
  789.      parisons.
  790.  
  791. OPERANDS
  792.      A Tcl expression consists  of  a  combination  of  operands,
  793.      operators, and parentheses.  White space may be used between
  794.      the operands and operators and parentheses; it is ignored by
  795.      the  expression  processor.   Where  possible,  operands are
  796.      interpreted as integer values.  Integer values may be speci-
  797.      fied  in  decimal  (the normal case), in octal (if the first
  798.      character of the operand is 0), or in  hexadecimal  (if  the
  799.      first  two characters of the operand are 0x).  If an operand
  800.      does not have one of the integer formats given  above,  then
  801.      it  is  treated as a floating-point number if that is possi-
  802.      ble.  Floating-point numbers may be specified in any of  the
  803.      ways  accepted  by an ANSI-compliant C compiler (except that
  804.      the ``f'', ``F'', ``l'', and ``L'' suffixes will not be per-
  805.      mitted in most installations).  For example, all of the fol-
  806.      lowing are valid  floating-point  numbers:   2.1,  3.,  6e4,
  807.      7.91e+16.  If no numeric interpretation is possible, then an
  808.      operand is left as a string  (and  only  a  limited  set  of
  809.      operators may be applied to it).
  810.  
  811.      Operands may be specified in any of the following ways:
  812.  
  813.      [1]  As an numeric value, either integer or floating-point.
  814.  
  815.      [2]  As a Tcl variable,  using  standard  $  notation.   The
  816.           variable's value will be used as the operand.
  817.  
  818.      [3]  As a string enclosed in double-quotes.  The  expression
  819.           parser  will  perform  backslash, variable, and command
  820.           substitutions on the information  between  the  quotes,
  821.           and use the resulting value as the operand
  822.  
  823.      [4]  As a string enclosed in braces.  The characters between
  824.           the open brace and matching close brace will be used as
  825.           the operand without any substitutions.
  826.  
  827.      [5]  As a Tcl command enclosed  in  brackets.   The  command
  828.           will  be  executed  and  its result will be used as the
  829.           operand.
  830.  
  831.      [6]  As a mathematical function whose arguments have any  of  |
  832.           the above forms for operands, such as ``sin($x)''.  See  |
  833.           below for a list of defined functions.
  834.  
  835.      Where  substitutions  occur  above   (e.g.   inside   quoted
  836.      strings),  they  are  performed by the expression processor.
  837.      However, an additional layer  of  substitution  may  already
  838.      have been performed by the command parser before the expres-
  839.      sion processor was called.  As discussed below, it  is  usu-
  840.      ally  best  to  enclose expressions in braces to prevent the
  841.      command parser from performing  substitutions  on  the  con-
  842.      tents.
  843.  
  844.      For some examples of simple expressions, suppose  the  vari-
  845.      able  a  has the value 3 and the variable b has the value 6.
  846.      Then the command on the left side of each of the lines below
  847.      will produce the value on the right side of the line:
  848.  
  849.           expr 3.1 + $a           6.1
  850.           expr 2 + "$a.$b"        5.6
  851.           expr 4*[llength "6 2"]  8
  852.           expr {{word one} < "word $a"}0
  853.  
  854. OPERATORS
  855.      The valid operators are listed below, grouped in  decreasing
  856.      order of precedence:
  857.  
  858.      -  ~  !             Unary minus, bit-wise NOT, logical  NOT.
  859.                          None of these operands may be applied to
  860.                          string operands, and bit-wise NOT may be
  861.                          applied only to integers.
  862.  
  863.      *  /  %             Multiply, divide,  remainder.   None  of
  864.                          these  operands may be applied to string
  865.                          operands, and remainder may  be  applied
  866.                          only  to  integers.   The remainder will  |
  867.                          always have the same sign as the divisor  |
  868.                          and  an  absolute value smaller than the  |
  869.                          divisor.
  870.  
  871.      +  -                Add and subtract.  Valid for any numeric
  872.                          operands.
  873.  
  874.      <<  >>              Left and right shift.  Valid for integer
  875.                          operands only.
  876.  
  877.      <  >  <=  >=        Boolean  less,  greater,  less  than  or
  878.                          equal,  and greater than or equal.  Each
  879.                          operator produces 1 if the condition  is
  880.                          true,  0 otherwise.  These operators may
  881.                          be applied to strings as well as numeric
  882.                          operands,  in  which  case  string  com-
  883.                          parison is used.
  884.  
  885.      ==  !=              Boolean  equal  and  not  equal.    Each
  886.                          operator  produces  a  zero/one  result.
  887.                          Valid for all operand types.
  888.  
  889.      &                   Bit-wise   AND.    Valid   for   integer
  890.                          operands only.
  891.  
  892.      ^                   Bit-wise  exclusive   OR.    Valid   for
  893.                          integer operands only.
  894.  
  895.      |                   Bit-wise OR.  Valid for integer operands
  896.                          only.
  897.  
  898.      &&                  Logical AND.  Produces  a  1  result  if
  899.                          both operands are non-zero, 0 otherwise.
  900.                          Valid   for   numeric   operands    only
  901.                          (integers or floating-point).
  902.  
  903.      ||                  Logical OR.  Produces a 0 result if both
  904.                          operands  are  zero, 1 otherwise.  Valid
  905.                          for numeric operands only  (integers  or
  906.                          floating-point).
  907.  
  908.      x?y:z               If-then-else, as in C.  If  x  evaluates
  909.                          to  non-zero,  then  the  result  is the
  910.                          value of y.  Otherwise the result is the
  911.                          value  of  z.  The x operand must have a
  912.                          numeric value.
  913.  
  914.      See the C manual for more details on the results produced by
  915.      each  operator.   All of the binary operators group left-to-
  916.      right within the same precedence level.   For  example,  the
  917.      command
  918.  
  919.           expr 4*2 < 7
  920.      returns 0.
  921.  
  922.      The &&, ||, and ?: operators have ``lazy evaluation'',  just
  923.      as in C, which means that operands are not evaluated if they
  924.      are not needed to determine the outcome.   For  example,  in
  925.      the command
  926.  
  927.           expr {$v ? [a] : [b]}
  928.      only one of [a] or [b] will actually be evaluated, depending
  929.      on  the  value of $v.  Note, however, that this is only true
  930.      if the entire expression is enclosed in  braces;   otherwise
  931.      the  Tcl parser will evaluate both [a] and [b] before invok-
  932.      ing the expr command.
  933.  
  934. MATH FUNCTIONS
  935.      Tcl supports the following mathematical functions in expres-  |
  936.      sions:                                                        |
  937.  
  938.           acos        cos         hypot      sinh                  |
  939.           asin        cosh        log        sqrt                  |
  940.           atan        exp         log10      tan                   |
  941.           atan2       floor       pow        tanh                  |
  942.           ceil        fmod        sin                              |
  943.      Each of these functions invokes the math library function of  |
  944.      the same name;  see the manual entries for the library func-  |
  945.      tions for details on what they do.  Tcl also implements  the  |
  946.      following  functions  for  conversion  between  integers and  |
  947.      floating-point numbers:                                       |
  948.  
  949.      abs(arg)                                                           ||
  950.           Returns  the  absolute value of arg.  Arg may be either  |
  951.           integer or floating-point, and the result  is  returned  |
  952.           in the same form.                                        |
  953.  
  954.      double(arg)                                                        ||
  955.           If arg is a floating value, returns arg, otherwise con-  |
  956.           verts arg to floating and returns the converted value.   |
  957.  
  958.      int(arg)                                                           ||
  959.           If arg is an integer value, returns arg, otherwise con-  |
  960.           verts arg to integer by truncation and returns the con-  |
  961.           verted value.                                            |
  962.  
  963.      round(arg)                                                         ||
  964.           If arg is an integer value, returns arg, otherwise con-  |
  965.           verts arg to integer by rounding and returns  the  con-  |
  966.           verted value.                                            |
  967.  
  968.      In addition to these predifined functions, applications  may  |
  969.      define additional functions using Tcl_CreateMathFunc().
  970.  
  971. TYPES, OVERFLOW, AND PRECISION
  972.      All internal computations involving integers are  done  with
  973.      the  C  type  long,  and all internal computations involving
  974.      floating-point are done with the C type double.   When  con-
  975.      verting  a  string  to  floating-point, exponent overflow is
  976.      detected and results in a  Tcl  error.   For  conversion  to
  977.      integer  from  string,  detection of overflow depends on the
  978.      behavior of some routines in the  local  C  library,  so  it
  979.      should  be  regarded  as  unreliable.   In any case, integer
  980.      overflow and underflow are generally not  detected  reliably
  981.      for   intermediate  results.   Floating-point  overflow  and
  982.      underflow are  detected  to  the  degree  supported  by  the
  983.      hardware, which is generally pretty reliable.
  984.  
  985.      Conversion  among  internal  representations  for   integer,
  986.      floating-point, and string operands is done automatically as
  987.      needed.  For  arithmetic  computations,  integers  are  used
  988.      until  some floating-point number is introduced, after which
  989.      floating-point is used.  For example,
  990.  
  991.           expr 5 / 4
  992.      returns 1, while
  993.  
  994.           expr 5 / 4.0
  995.           expr 5 / ( [string length "abcd"] + 0.0 )
  996.      both return 1.25.  Floating-point values are always returned  |
  997.      with  a  ``.''  or  an ``e'' so that they will not look like  |
  998.      integer values.  For example,                                 |
  999.  
  1000.           expr 20.0/5.0                                            |
  1001.      returns   ``4.0'',   not   ``4''.    The   global   variable  |
  1002.      tcl_precision  determines  the  the  number  of  significant  |
  1003.      digits that are retained when floating values are  converted  |
  1004.      to  strings  (except  that trailing zeroes are omitted).  If  |
  1005.      tcl_precision is unset then 6 digits of precision are  used.  |
  1006.      To  retain  all of the significant bits of an IEEE floating-  |
  1007.      point number set tcl_precision to 17;  if a  value  is  con-  |
  1008.      verted  to  string with 17 digits of precision and then con-  |
  1009.      verted back  to  binary  for  some  later  calculation,  the  |
  1010.      resulting  binary value is guaranteed to be identical to the  |
  1011.      original one.
  1012.  
  1013.  
  1014. STRING OPERATIONS
  1015.      String values may be used  as  operands  of  the  comparison
  1016.      operators,  although  the  expression  evaluator tries to do
  1017.      comparisons as integer or floating-point when  it  can.   If
  1018.      one  of  the  operands  of  a comparison is a string and the
  1019.      other has a numeric value, the numeric operand is  converted
  1020.      back to a string using the C sprintf format specifier %d for
  1021.      integers and %g for floating-point values.  For example, the
  1022.      commands
  1023.  
  1024.           expr {"0x03" > "2"}
  1025.           expr {"0y" < "0x12"}
  1026.      both return 1.  The first comparison is done  using  integer
  1027.      comparison,  and  the second is done using string comparison
  1028.      after the second operand is converted to the string ``18''.
  1029.  
  1030.  
  1031. KEYWORDS
  1032.      arithmetic, boolean, compare, expression
  1033.  
  1034.  
  1035. _________________________________________________________________
  1036.  
  1037. NAME
  1038.      file - Manipulate file names and attributes
  1039.  
  1040. SYNOPSIS
  1041.      file option name ?arg arg ...?
  1042. _________________________________________________________________
  1043.  
  1044.  
  1045. DESCRIPTION
  1046.      This command provides several operations on a file's name or
  1047.      attributes.  Name is the name of a file; if it starts with a
  1048.      tilde, then tilde substitution is done before executing  the
  1049.      command   (see  the  manual  entry  for  Tcl_TildeSubst  for
  1050.      details).  Option indicates what to do with the  file  name.
  1051.      Any unique abbreviation for option is acceptable.  The valid
  1052.      options are:
  1053.  
  1054.      file atime name
  1055.           Returns a decimal string giving the time at which  file
  1056.           name  was  last  accessed.  The time is measured in the
  1057.           standard POSIX fashion as seconds from a fixed starting
  1058.           time  (often  January  1,  1970).   If the file doesn't
  1059.           exist or its access time  cannot  be  queried  then  an
  1060.           error is generated.
  1061.  
  1062.      file dirname name
  1063.           Returns all of the characters in name  up  to  but  not
  1064.           including  the  last  slash character.  If there are no
  1065.           slashes in name then returns ``.''.  If the last  slash
  1066.           in name is its first character, then return ``/''.
  1067.  
  1068.      file executable name
  1069.           Returns 1 if file name is  executable  by  the  current
  1070.           user, 0 otherwise.
  1071.  
  1072.      file exists name
  1073.           Returns 1 if file name exists and the current user  has
  1074.           search  privileges for the directories leading to it, 0
  1075.           otherwise.
  1076.  
  1077.      file extension name
  1078.           Returns all of the characters in name after and includ-
  1079.           ing  the  last dot in name.  If there is no dot in name
  1080.           then returns the empty string.
  1081.  
  1082.      file isdirectory name
  1083.           Returns 1 if file name is a directory, 0 otherwise.
  1084.  
  1085.      file isfile name
  1086.           Returns 1 if file name is a regular file, 0 otherwise.
  1087.  
  1088.      file lstat name varName
  1089.           Same as stat option (see below) except uses  the  lstat
  1090.           kernel  call  instead of stat.  This means that if name
  1091.           refers to a symbolic link the information  returned  in
  1092.           varName  is for the link rather than the file it refers
  1093.           to.  On systems that don't support symbolic links  this
  1094.           option behaves exactly the same as the stat option.
  1095.  
  1096.      file mtime name
  1097.           Returns a decimal string giving the time at which  file
  1098.           name  was  last  modified.  The time is measured in the
  1099.           standard POSIX fashion as seconds from a fixed starting
  1100.           time  (often  January  1,  1970).   If the file doesn't
  1101.           exist or its modified time cannot be  queried  then  an
  1102.           error is generated.
  1103.  
  1104.      file owned name
  1105.           Returns 1 if file name is owned by the current user,  0
  1106.           otherwise.
  1107.  
  1108.      file readable name
  1109.           Returns 1 if file name is readable by the current user,
  1110.           0 otherwise.
  1111.  
  1112.      file readlink name
  1113.           Returns the value of the symbolic link  given  by  name
  1114.           (i.e.  the  name  of  the  file it points to).  If name
  1115.           isn't a symbolic link or its value cannot be read, then
  1116.           an  error  is  returned.  On systems that don't support
  1117.           symbolic links this option is undefined.
  1118.  
  1119.      file rootname name
  1120.           Returns all of the characters in name  up  to  but  not
  1121.           including  the  last  ``.''  character in the name.  If
  1122.           name doesn't contain a dot, then returns name.
  1123.  
  1124.      file size name
  1125.           Returns a decimal string giving the size of  file  name
  1126.           in bytes.  If the file doesn't exist or its size cannot
  1127.           be queried then an error is generated.
  1128.  
  1129.      file stat  name varName
  1130.           Invokes the stat kernel call  on  name,  and  uses  the
  1131.           variable  given by varName to hold information returned
  1132.           from the kernel call.  VarName is treated as  an  array
  1133.           variable,  and  the following elements of that variable
  1134.           are set: atime, ctime,  dev,  gid,  ino,  mode,  mtime,
  1135.           nlink,  size, type, uid.  Each element except type is a
  1136.           decimal string with  the  value  of  the  corresponding
  1137.           field  from  the  stat return structure; see the manual
  1138.           entry for stat for  details  on  the  meanings  of  the
  1139.           values.  The type element gives the type of the file in
  1140.           the same form returned by the command file type.   This
  1141.           command returns an empty string.
  1142.  
  1143.      file tail name
  1144.           Returns all of the characters in name  after  the  last
  1145.           slash.  If name contains no slashes then returns name.
  1146.  
  1147.      file type name
  1148.           Returns a string giving the type of  file  name,  which
  1149.           will  be  one  of  file,  directory,  characterSpecial,
  1150.           blockSpecial, fifo, link, or socket.
  1151.  
  1152.      file writable name
  1153.           Returns 1 if file name is writable by the current user,
  1154.           0 otherwise.
  1155.  
  1156.  
  1157. KEYWORDS
  1158.      attributes, directory, file, name, stat
  1159.  
  1160.  
  1161. _________________________________________________________________
  1162.  
  1163. NAME
  1164.      flush - Flush buffered output for a file
  1165.  
  1166. SYNOPSIS
  1167.      flush fileId
  1168. _________________________________________________________________
  1169.  
  1170.  
  1171. DESCRIPTION
  1172.      Flushes any  output  that  has  been  buffered  for  fileId.
  1173.      FileId  must have been the return value from a previous call
  1174.      to open, or it may be stdout or stderr to access one of  the
  1175.      standard  I/O  streams;  it  must  refer  to a file that was
  1176.      opened for writing.  The command returns an empty string.
  1177.  
  1178.  
  1179. KEYWORDS
  1180.      buffer, file, flush, output
  1181.  
  1182.  
  1183. _________________________________________________________________
  1184.  
  1185. NAME
  1186.      for - ``For'' loop
  1187.  
  1188. SYNOPSIS
  1189.      for start test next body
  1190. _________________________________________________________________
  1191.  
  1192.  
  1193. DESCRIPTION
  1194.      For is a looping command, similar in structure to the C  for
  1195.      statement.   The start, next, and body arguments must be Tcl
  1196.      command strings, and test is an expression string.  The  for
  1197.      command  first invokes the Tcl interpreter to execute start.
  1198.      Then it repeatedly evaluates test as an expression;  if  the
  1199.      result  is  non-zero it invokes the Tcl interpreter on body,
  1200.      then invokes the Tcl interpreter on next, then  repeats  the
  1201.      loop.   The command terminates when test evaluates to 0.  If
  1202.      a continue command is invoked within body then any remaining
  1203.      commands  in the current execution of body are skipped; pro-
  1204.      cessing continues by invoking the Tcl interpreter  on  next,
  1205.      then  evaluating  test,  and  so  on.  If a break command is
  1206.      invoked within body or  next,  then  the  for  command  will
  1207.      return immediately.  The operation of break and continue are
  1208.      similar to the corresponding statements in C.   For  returns
  1209.      an empty string.
  1210.  
  1211.  
  1212. KEYWORDS
  1213.      for, iteration, looping
  1214.  
  1215.  
  1216. _________________________________________________________________
  1217.  
  1218. NAME
  1219.      foreach - Iterate over all elements in a list
  1220.  
  1221. SYNOPSIS
  1222.      foreach varname list body
  1223. _________________________________________________________________
  1224.  
  1225.  
  1226. DESCRIPTION
  1227.      In this command varname is the name of a variable, list is a
  1228.      list  of  values  to  assign  to  varname, and body is a Tcl
  1229.      script.  For each element of list (in  order  from  left  to
  1230.      right), foreach assigns the contents of the field to varname
  1231.      as if the lindex command had been used to extract the field,
  1232.      then  calls  the Tcl interpreter to execute body.  The break
  1233.      and continue statements may be invoked inside body, with the
  1234.      same effect as in the for command.  Foreach returns an empty
  1235.      string.
  1236.  
  1237.  
  1238. KEYWORDS
  1239.      foreach, iteration, list, looping
  1240.  
  1241.  
  1242. _________________________________________________________________
  1243.  
  1244. NAME
  1245.      format - Format a string in the style of sprintf
  1246.  
  1247. SYNOPSIS
  1248.      format formatString ?arg arg ...?
  1249. _________________________________________________________________
  1250.  
  1251.  
  1252. INTRODUCTION
  1253.      This command generates a formatted string in the same way as
  1254.      the  ANSI C sprintf procedure (it uses sprintf in its imple-
  1255.      mentation).   FormatString  indicates  how  to  format   the
  1256.      result, using % conversion specifiers as in sprintf, and the
  1257.      additional arguments, if any, provide values to  be  substi-
  1258.      tuted  into the result.  The return value from format is the
  1259.      formatted string.
  1260.  
  1261.  
  1262. DETAILS ON FORMATTING
  1263.      The command operates by scanning formatString from  left  to
  1264.      right.  Each character from the format string is appended to
  1265.      the result string unless it is a percent sign.  If the char-
  1266.      acter  is  a  %  then it is not copied to the result string.
  1267.      Instead,  the  characters  following  the  %  character  are
  1268.      treated as a conversion specifier.  The conversion specifier
  1269.      controls the conversion of the next successive arg to a par-
  1270.      ticular  format  and  the  result  is appended to the result
  1271.      string in place of the conversion specifier.  If  there  are
  1272.      multiple  conversion  specifiers  in the format string, then
  1273.      each one controls the conversion of one additional arg.  The
  1274.      format  command  must be given enough args to meet the needs
  1275.      of all of the conversion specifiers in formatString.
  1276.  
  1277.      Each conversion specifier may contain up  to  six  different
  1278.      parts: an XPG3 position specifier, a set of flags, a minimum  |
  1279.      field width, a precision, a length modifier, and  a  conver-
  1280.      sion  character.   Any of these fields may be omitted except
  1281.      for the conversion character.  The fields that  are  present
  1282.      must  appear in the order given above.  The paragraphs below
  1283.      discuss each of these fields in turn.
  1284.  
  1285.      If the % is followed by a decimal number  and  a  $,  as  in  |
  1286.      ``%2$d'',  then  the  value to convert is not taken from the  |
  1287.      next sequential argument.  Instead, it  is  taken  from  the  |
  1288.      argument indicated by the number, where 1 corresponds to the  |
  1289.      first arg.  If the conversion  specifier  requires  multiple  |
  1290.      arguments because of * characters in the specifier then suc-  |
  1291.      cessive arguments are used, starting with the argument given  |
  1292.      by  the number.  This follows the XPG3 conventions for posi-  |
  1293.      tional specifiers.  If there are any  positional  specifiers  |
  1294.      in  formatString  then  all  of the specifiers must be posi-  |
  1295.      tional.
  1296.  
  1297.      The second portion of a conversion specifier may contain any
  1298.      of the following flag characters, in any order:
  1299.  
  1300.      -         Specifies that the converted  argument  should  be
  1301.                left-justified  in its field (numbers are normally
  1302.                right-justified with leading spaces if needed).
  1303.  
  1304.      +         Specifies that a number should always  be  printed
  1305.                with a sign, even if positive.
  1306.  
  1307.      space     Specifies that a space  should  be  added  to  the
  1308.                beginning  of  the  number  if the first character
  1309.                isn't a sign.
  1310.  
  1311.      0         Specifies that the number should be padded on  the
  1312.                left with zeroes instead of spaces.
  1313.  
  1314.      #         Requests an alternate output form.  For  o  and  O
  1315.                conversions  it guarantees that the first digit is
  1316.                always 0.  For  x  or  X  conversions,  0x  or  0X
  1317.                (respectively)  will  be added to the beginning of
  1318.                the result unless it is zero.  For  all  floating-
  1319.                point  conversions  (e, E, f, g, and G) it guaran-
  1320.                tees that the result always has a  decimal  point.
  1321.                For g and G conversions it specifies that trailing
  1322.                zeroes should not be removed.
  1323.  
  1324.      The third portion of a conversion specifier is a number giv-
  1325.      ing  a minimum field width for this conversion.  It is typi-
  1326.      cally used to make columns line up in tabular printouts.  If
  1327.      the  converted  argument  contains fewer characters than the
  1328.      minimum field width then it will be padded so that it is  as
  1329.      wide as the minimum field width.  Padding normally occurs by
  1330.      adding extra spaces on the left of the  converted  argument,
  1331.      but  the  0  and - flags may be used to specify padding with
  1332.      zeroes on the left or with  spaces  on  the  right,  respec-
  1333.      tively.  If the minimum field width is specified as * rather
  1334.      than a number, then the next argument to the format  command
  1335.      determines  the  minimum  field  width; it must be a numeric
  1336.      string.
  1337.  
  1338.      The fourth portion of a conversion specifier is a precision,
  1339.      which consists of a period followed by a number.  The number
  1340.      is used in different ways for different conversions.  For e,
  1341.      E,  and  f  conversions it specifies the number of digits to
  1342.      appear to the right of the  decimal  point.   For  g  and  G
  1343.      conversions  it  specifies  the  total  number  of digits to
  1344.      appear, including those on both sides of the  decimal  point
  1345.      (however, trailing zeroes after the decimal point will still
  1346.      be omitted unless the  #  flag  has  been  specified).   For
  1347.      integer conversions, it specifies a mimimum number of digits
  1348.      to print (leading zeroes will be added if necessary).  For s
  1349.      conversions it specifies the maximum number of characters to
  1350.      be printed; if the string  is  longer  than  this  then  the
  1351.      trailing  characters  will  be dropped.  If the precision is
  1352.      specified with * rather than a number then the next argument
  1353.      to the format command determines the precision; it must be a
  1354.      numeric string.
  1355.  
  1356.      The fourth part of a conversion specifier is a length modif-
  1357.      ier, which must be h or l.  If it is h it specifies that the
  1358.      numeric value should be truncated to a 16-bit  value  before
  1359.      converting.   This  option is rarely useful.  The l modifier
  1360.      is ignored.
  1361.  
  1362.      The last thing in a conversion specifier  is  an  alphabetic
  1363.      character  that  determines  what kind of conversion to per-
  1364.      form.  The following  conversion  characters  are  currently
  1365.      supported:
  1366.  
  1367.      d         Convert integer to signed decimal string.
  1368.  
  1369.      u         Convert integer to unsigned decimal string.
  1370.  
  1371.      i         Convert integer to  signed  decimal  string;   the
  1372.                integer may either be in decimal, in octal (with a
  1373.                leading 0) or in hexadecimal (with a leading 0x).
  1374.  
  1375.      o         Convert integer to unsigned octal string.
  1376.  
  1377.      x or X    Convert integer to  unsigned  hexadecimal  string,
  1378.                using   digits   ``0123456789abcdef''  for  x  and
  1379.                ``0123456789ABCDEF'' for X).
  1380.  
  1381.      c         Convert  integer  to  the   8-bit   character   it
  1382.                represents.
  1383.  
  1384.      s         No conversion; just insert string.
  1385.  
  1386.      f         Convert floating-point number  to  signed  decimal
  1387.                string of the form xx.yyy, where the number of y's
  1388.                is determined by the precision (default:  6).   If
  1389.                the  precision  is 0 then no decimal point is out-
  1390.                put.
  1391.  
  1392.      e or e    Convert floating-point number to scientific  nota-
  1393.                tion  in  the  form x.yyye+__zz, where the number of
  1394.                y's is determined by the precision  (default:  6).
  1395.                If  the  precision  is  0 then no decimal point is
  1396.                output.  If the E form is used then E  is  printed
  1397.                instead of e.
  1398.  
  1399.      g or G    If the exponent is less than -4 or greater than or
  1400.                equal  to  the  precision,  then convert floating-
  1401.                point number as for %e or %E.   Otherwise  convert
  1402.                as for %f.  Trailing zeroes and a trailing decimal
  1403.                point are omitted.
  1404.  
  1405.      %         No conversion: just insert %.
  1406.  
  1407.      For the numerical conversions the argument  being  converted
  1408.      must be an integer or floating-point string; format converts
  1409.      the argument to binary and then converts it back to a string
  1410.      according to the conversion specifier.
  1411.  
  1412.  
  1413. DIFFERENCES FROM ANSI SPRINTF
  1414.      The behavior of the format command is the same as the ANSI C  |
  1415.      sprintf procedure except for the following differences:       |
  1416.  
  1417.      [1]                                                                ||
  1418.           %p and %n specifiers are not currently supported.
  1419.  
  1420.      [2]  For %c conversions  the  argument  must  be  a  decimal
  1421.           string, which will then be converted to the correspond-
  1422.           ing character value.
  1423.  
  1424.      [3]  The l modifier is ignored;  integer values  are  always  |
  1425.           converted as if there were no modifier present and real  |
  1426.           values are always converted as if the l  modifier  were  |
  1427.           present  (i.e.  type  double  is  used for the internal  |
  1428.           representation).  If the h modifier is  specified  then  |
  1429.           integer  values  are  truncated to short before conver-  |
  1430.           sion.
  1431.  
  1432.  
  1433. KEYWORDS
  1434.      conversion specifier, format, sprintf, string, substitution
  1435.  
  1436.  
  1437. _________________________________________________________________
  1438.  
  1439. NAME
  1440.      gets - Read a line from a file
  1441.  
  1442. SYNOPSIS
  1443.      gets fileId ?varName?
  1444. _________________________________________________________________
  1445.  
  1446.  
  1447. DESCRIPTION
  1448.      This command reads the next line  from  the  file  given  by
  1449.      fileId  and  discards the terminating newline character.  If
  1450.      varName is specified then the line is placed in the variable
  1451.      by  that  name and the return value is a count of the number
  1452.      of characters read (not including the newline).  If the  end
  1453.      of the file is reached before reading any characters then -1
  1454.      is returned and varName is set to an empty string.  If  var-
  1455.      Name is not specified then the return value will be the line
  1456.      (minus the newline character) or an empty string if the  end
  1457.      of  the  file  is reached before reading any characters.  An
  1458.      empty string will also be returned if  a  line  contains  no
  1459.      characters except the newline, so eof may have to be used to
  1460.      determine what really happened.  If the  last  character  in
  1461.      the  file is not a newline character then gets behaves as if
  1462.      there were an additional newline character at the end of the
  1463.      file.   FileId must be stdin or the return value from a pre-
  1464.      vious call to open; it must refer to a file that was  opened
  1465.      for reading.  Any existing end-of-file or error condition on  |
  1466.      the file is cleared at the beginning of the gets command.
  1467.  
  1468.  
  1469. KEYWORDS
  1470.      file, line, read
  1471.  
  1472.  
  1473. _________________________________________________________________
  1474.  
  1475. NAME
  1476.      glob - Return names of files that match patterns
  1477.  
  1478. SYNOPSIS
  1479.      glob ?switches? pattern ?pattern ...?
  1480. _________________________________________________________________
  1481.  
  1482.  
  1483. DESCRIPTION
  1484.      This command performs file name ``globbing''  in  a  fashion
  1485.      similar  to  the  csh shell.  It returns a list of the files
  1486.      whose names match any of the pattern arguments.
  1487.  
  1488.      If the initial arguments to glob start with - then they  are  |
  1489.      treated  as  switches.  The following switches are currently  |
  1490.      supported:                                                    |
  1491.  
  1492.      -nocomplain
  1493.                     Allows an empty list to be  returned  without  |
  1494.                     error;   without  this  switch  an  error  is  |
  1495.                     returned if the result list would be empty.    |
  1496.  
  1497.      --                                                                 ||
  1498.                     Marks the end of switches.  The argument fol-  |
  1499.                     lowing this one will be treated as a  pattern  |
  1500.                     even if it starts with a -.
  1501.  
  1502.      The pattern arguments may contain any of the following  spe-
  1503.      cial characters:
  1504.  
  1505.      ?         Matches any single character.
  1506.  
  1507.      *         Matches any sequence of zero or more characters.
  1508.  
  1509.      [chars]   Matches any single character in chars.   If  chars
  1510.                contains a sequence of the form a-b then any char-
  1511.                acter between a and b (inclusive) will match.
  1512.  
  1513.      \x        Matches the character x.
  1514.  
  1515.      {a,b,...} Matches any of the strings a, b, etc.
  1516.  
  1517.      As with csh, a  ``.'' at the beginning of a file's  name  or
  1518.      just  after  a ``/'' must be matched explicitly or with a {}
  1519.      construct.   In  addition,  all  ``/''  characters  must  be
  1520.      matched explicitly.
  1521.  
  1522.      If the first character in a pattern is ``~'' then it  refers
  1523.      to  the  home  directory for the user whose name follows the
  1524.      ``~''.  If the ``~'' is followed immediately by  ``/''  then
  1525.      the value of the HOME environment variable is used.
  1526.  
  1527.      The glob command differs from  csh  globbing  in  two  ways.
  1528.      First,  it does not sort its result list (use the lsort com-
  1529.      mand if you  want  the  list  sorted).   Second,  glob  only  |
  1530.      returns  the  names of files that actually exist;  in csh no  |
  1531.      check for existence is made unless a pattern contains  a  ?,  |
  1532.      *, or [] construct.
  1533.  
  1534.  
  1535. KEYWORDS
  1536.      exist, file, glob, pattern
  1537.  
  1538.  
  1539. _________________________________________________________________
  1540.  
  1541. NAME
  1542.      global - Access global variables
  1543.  
  1544. SYNOPSIS
  1545.      global varname ?varname ...?
  1546. _________________________________________________________________
  1547.  
  1548.  
  1549. DESCRIPTION
  1550.      This command is ignored unless  a  Tcl  procedure  is  being
  1551.      interpreted.   If so then it declares the given varname's to
  1552.      be global variables rather than local ones.  For  the  dura-
  1553.      tion  of  the current procedure (and only while executing in
  1554.      the current procedure), any reference to any of the varnames
  1555.      will refer to the global variable by the same name.
  1556.  
  1557.  
  1558. KEYWORDS
  1559.      global, procedure, variable
  1560.  
  1561.  
  1562. _________________________________________________________________
  1563.  
  1564. NAME
  1565.      history - Manipulate the history list
  1566.  
  1567. SYNOPSIS
  1568.      history ?option? ?arg arg ...?
  1569. _________________________________________________________________
  1570.  
  1571.  
  1572. DESCRIPTION
  1573.      The history  command  performs  one  of  several  operations
  1574.      related  to recently-executed commands recorded in a history
  1575.      list.  Each of these recorded commands is referred to as  an
  1576.      ``event''.  When specifying an event to the history command,
  1577.      the following forms may be used:
  1578.  
  1579.      [1]  A number:  if positive, it refers  to  the  event  with
  1580.           that  number  (all  events are numbered starting at 1).
  1581.           If the number is negative, it selects an event relative
  1582.           to  the current event (-1 refers to the previous event,
  1583.           -2 to the one before that, and so on).
  1584.  
  1585.      [2]  A string:  selects the most recent event  that  matches
  1586.           the string.  An event is considered to match the string
  1587.           either if the string is the same as the  first  charac-
  1588.           ters  of  the event, or if the string matches the event
  1589.           in the sense of the string match command.
  1590.  
  1591.      The history command can take any of the following forms:
  1592.  
  1593.      history
  1594.           Same as history info, described below.
  1595.  
  1596.      history add command ?exec?
  1597.           Adds the command argument to the history list as a  new
  1598.           event.   If exec is specified (or abbreviated) then the
  1599.           command is also executed and its  result  is  returned.
  1600.           If  exec  isn't  specified  then  an  empty  string  is
  1601.           returned as result.
  1602.  
  1603.      history change newValue ?event?
  1604.           Replaces the value recorded for an event with newValue.
  1605.           Event  specifies  the event to replace, and defaults to
  1606.           the current event (not  event  -1).   This  command  is
  1607.           intended  for  use in commands that implement new forms
  1608.           of history substitution and wish to replace the current
  1609.           event (which invokes the substitution) with the command
  1610.           created through substitution.  The return value  is  an
  1611.           empty string.
  1612.  
  1613.      history event ?event?
  1614.           Returns the value of the event given by  event.   Event
  1615.           defaults  to  -1.  This command causes history revision
  1616.           to occur: see below for details.
  1617.  
  1618.      history info ?count?
  1619.           Returns a formatted  string  (intended  for  humans  to
  1620.           read)  giving the event number and contents for each of
  1621.           the events in  the  history  list  except  the  current
  1622.           event.  If count is specified then only the most recent
  1623.           count events are returned.
  1624.  
  1625.      history keep count
  1626.           This command may be used to change the size of the his-
  1627.           tory  list  to  count events.  Initially, 20 events are
  1628.           retained in the history list.  This command returns  an
  1629.           empty string.
  1630.  
  1631.      history nextid
  1632.           Returns the number of the next event to be recorded  in
  1633.           the  history list.  It is useful for things like print-
  1634.           ing the event number in command-line prompts.
  1635.  
  1636.      history redo ?event?
  1637.           Re-executes the command indicated by event  and  return
  1638.           its  result.   Event  defaults  to  -1.   This  command
  1639.           results in history revision:  see below for details.
  1640.  
  1641.      history substitute old new ?event?
  1642.           Retrieves the command given by event (-1  by  default),
  1643.           replace  any  occurrences  of old by new in the command
  1644.           (only simple character equality is supported;  no  wild
  1645.           cards),  execute  the resulting command, and return the
  1646.           result of that execution.  This command results in his-
  1647.           tory revision:  see below for details.
  1648.  
  1649.      history words selector ?event?
  1650.           Retrieves from  the  command  given  by  event  (-1  by
  1651.           default)  the words given by selector, and return those
  1652.           words in a string separated by  spaces.   The  selector
  1653.           argument  has  three  forms.   If it is a single number
  1654.           then it selects the word given by that  number  (0  for
  1655.           the command name, 1 for its first argument, and so on).
  1656.           If it consists of two numbers separated by a dash, then
  1657.           it selects all the arguments between those two.  Other-
  1658.           wise selector is treated as a pattern; all words match-
  1659.           ing  that  pattern  (in  the sense of string match) are
  1660.           returned.  In the numeric forms $ may be used to select
  1661.           the  last  word of a command.  For example, suppose the
  1662.           most recent command in the history list is
  1663.  
  1664.                format  {%s is %d years old} Alice [expr $ageInMonths/12]
  1665.           Below are some history commands and  the  results  they
  1666.           would produce:
  1667.  
  1668.  
  1669.                history words $ [expr $ageInMonths/12]
  1670.                history words 1-2{%s is %d years  old} Alice
  1671.                history words *a*o*{%s is %d years old} [expr $ageInMonths/12]
  1672.           History words results in history revision:   see  below
  1673.           for details.
  1674.  
  1675. HISTORY REVISION
  1676.      The history  options  event,  redo,  substitute,  and  words
  1677.      result  in  ``history revision''.  When one of these options
  1678.      is invoked then the current event is modified  to  eliminate
  1679.      the  history  command  and replace it with the result of the
  1680.      history command.  For example, suppose that the most  recent
  1681.      command in the history list is
  1682.  
  1683.           set a [expr $b+2]
  1684.      and suppose that the next command invoked is one of the ones
  1685.      on  the  left side of the table below.  The command actually
  1686.      recorded in the history event will be the corresponding  one
  1687.      on the right side of the table.
  1688.  
  1689.  
  1690.           history redo    set a [expr $b+2]
  1691.           history s a b   set b [expr $b+2]
  1692.           set c [history w 2]set c [expr $b+2]
  1693.      History revision is needed because event specifiers like  -1
  1694.      are  only valid at a particular time:  once more events have
  1695.      been added to the history list a different  event  specifier
  1696.      would  be needed.  History revision occurs even when history
  1697.      is invoked indirectly from the current event  (e.g.  a  user
  1698.      types  a  command  that invokes a Tcl procedure that invokes
  1699.      history):  the top-level command whose execution  eventually
  1700.      resulted  in  a history command is replaced.  If you wish to
  1701.      invoke commands like history words without history revision,
  1702.      you  can use history event to save the current history event
  1703.      and then use history change to restore it later.
  1704.  
  1705.  
  1706. KEYWORDS
  1707.      event, history, record, revision
  1708.  
  1709.  
  1710. _________________________________________________________________
  1711.  
  1712. NAME
  1713.      if - Execute scripts conditionally
  1714.  
  1715. SYNOPSIS
  1716.      if expr1 ?then? body1 elseif expr2 ?then? body2  elseif  ...
  1717.      ?else? ?bodyN?
  1718. _________________________________________________________________
  1719.  
  1720.  
  1721. DESCRIPTION
  1722.      The if command evaluates expr1 as an expression (in the same
  1723.      way  that  expr  evaluates  its argument).  The value of the
  1724.      expression must be a boolean (a numeric value,  where  0  is  |
  1725.      false  and  anything is true, or a string value such as true  |
  1726.      or yes for true and false or no for false); if  it  is  true
  1727.      then body1 is executed by passing it to the Tcl interpreter.
  1728.      Otherwise expr2 is evaluated as an expression and if  it  is
  1729.      true  then  body2  is  executed,  and so on.  If none of the
  1730.      expressions evaluates to true then bodyN is  executed.   The
  1731.      then and else arguments are optional ``noise words'' to make
  1732.      the command easier to read.  There  may  be  any  number  of
  1733.      elseif  clauses,  including zero.  BodyN may also be omitted
  1734.      as long as else is omitted too.  The return value  from  the
  1735.      command  is the result of the body script that was executed,
  1736.      or an empty string if none of the expressions  was  non-zero
  1737.      and there was no bodyN.
  1738.  
  1739.  
  1740. KEYWORDS
  1741.      boolean, conditional, else, false, if, true
  1742.  
  1743.  
  1744. _________________________________________________________________
  1745.  
  1746. NAME
  1747.      incr - Increment the value of a variable
  1748.  
  1749. SYNOPSIS
  1750.      incr varName ?increment?
  1751. _________________________________________________________________
  1752.  
  1753.  
  1754. DESCRIPTION
  1755.      Increments the value stored in the variable  whose  name  is
  1756.      varName.   The value of the variable must be an integer.  If
  1757.      increment is supplied then  its  value  (which  must  be  an
  1758.      integer)  is added to the value of variable varName;  other-
  1759.      wise 1 is added to varName.  The new value is  stored  as  a
  1760.      decimal  string  in  variable  varName  and also returned as
  1761.      result.
  1762.  
  1763.  
  1764. KEYWORDS
  1765.      add, increment, variable, value
  1766.  
  1767.  
  1768. _________________________________________________________________
  1769.  
  1770. NAME
  1771.      info - Return information about the state of the Tcl  inter-
  1772.      preter
  1773.  
  1774. SYNOPSIS
  1775.      info option ?arg arg ...?
  1776. _________________________________________________________________
  1777.  
  1778.  
  1779. DESCRIPTION
  1780.      This command provides information about various internals of
  1781.      the  Tcl  interpreter.   The  legal  option's  (which may be
  1782.      abbreviated) are:
  1783.  
  1784.      info args procname
  1785.           Returns a list containing the names of the arguments to
  1786.           procedure  procname,  in  order.   Procname must be the
  1787.           name of a Tcl command procedure.
  1788.  
  1789.      info body procname
  1790.           Returns the body of procedure procname.  Procname  must
  1791.           be the name of a Tcl command procedure.
  1792.  
  1793.      info cmdcount
  1794.           Returns a count of the total number  of  commands  that
  1795.           have been invoked in this interpreter.
  1796.  
  1797.      info commands ?pattern?
  1798.           If pattern isn't specified, returns a list of names  of
  1799.           all  the Tcl commands, including both the built-in com-
  1800.           mands written in C and the command  procedures  defined
  1801.           using  the proc command.  If pattern is specified, only
  1802.           those names matching pattern are returned.  Matching is
  1803.           determined using the same rules as for string match.
  1804.  
  1805.      info complete command
  1806.           Returns 1 if command is a complete Tcl command  in  the
  1807.           sense of having no unclosed quotes, braces, brackets or
  1808.           array element names, If the command doesn't  appear  to
  1809.           be  complete then 0 is returned.  This command is typi-
  1810.           cally used in line-oriented input environments to allow
  1811.           users to type in commands that span multiple lines;  if
  1812.           the  command  isn't  complete,  the  script  can  delay
  1813.           evaluating it until additional lines have been typed to
  1814.           complete the command.
  1815.  
  1816.      info default procname arg varname
  1817.           Procname must be the name of a  Tcl  command  procedure
  1818.           and  arg  must  be the name of an argument to that pro-
  1819.           cedure.  If arg doesn't have a default value  then  the
  1820.           command  returns  0.  Otherwise it returns 1 and places
  1821.           the default value of arg into variable varname.
  1822.  
  1823.      info exists varName
  1824.           Returns 1 if the variable named varName exists  in  the
  1825.           current context (either as a global or local variable),
  1826.           returns 0 otherwise.
  1827.  
  1828.      info globals ?pattern?
  1829.           If pattern isn't specified, returns a list of  all  the
  1830.           names  of  currently-defined global variables.  If pat-
  1831.           tern is specified, only those  names  matching  pattern
  1832.           are  returned.   Matching  is determined using the same
  1833.           rules as for string match.
  1834.  
  1835.      info level ?number?
  1836.           If number is not  specified,  this  command  returns  a
  1837.           number  giving  the  stack  level  of the invoking pro-
  1838.           cedure, or 0 if the command is  invoked  at  top-level.
  1839.           If  number is specified, then the result is a list con-
  1840.           sisting of the name and  arguments  for  the  procedure
  1841.           call  at level number on the stack.  If number is posi-
  1842.           tive then it selects a particular stack level (1 refers
  1843.           to the top-most active procedure, 2 to the procedure it
  1844.           called, and so on); otherwise it gives a level relative
  1845.           to  the  current  level  (0  refers to the current pro-
  1846.           cedure, -1 to its caller, and so on).  See the  uplevel
  1847.           command for more information on what stack levels mean.
  1848.  
  1849.      info library
  1850.           Returns the name of  the  library  directory  in  which
  1851.           standard Tcl scripts are stored.  The default value for
  1852.           the library is compiled into Tcl, but it may  be  over-
  1853.           ridden by setting the TCL_LIBRARY environment variable.
  1854.           If there is no TCL_LIBRARY variable and no  compiled-in
  1855.           value  then  and  error  is generated.  See the library
  1856.           manual entry for details of the facilities provided  by
  1857.           the Tcl script library.  Normally each application will
  1858.           have its own  application-specific  script  library  in
  1859.           addition  to  the  Tcl  script library;  I suggest that
  1860.           each application set a global variable with a name like
  1861.           $app_library  (where  app is the application's name) to
  1862.           hold the location of that application's library  direc-
  1863.           tory.
  1864.  
  1865.      info locals ?pattern?
  1866.           If pattern isn't specified, returns a list of  all  the
  1867.           names  of  currently-defined local variables, including
  1868.           arguments to the current procedure, if any.   Variables
  1869.           defined  with the global and upvar commands will not be
  1870.           returned.  If pattern is specified,  only  those  names
  1871.           matching  pattern are returned.  Matching is determined
  1872.           using the same rules as for string match.
  1873.  
  1874.      info patchlevel
  1875.           Returns a decimal  integer  giving  the  current  patch  |
  1876.           level for Tcl.  The patch level is incremented for each  |
  1877.           new release or patch, and  it  uniquely  identifies  an  |
  1878.           official version of Tcl.
  1879.  
  1880.      info procs ?pattern?
  1881.           If pattern isn't specified, returns a list of  all  the
  1882.           names  of Tcl command procedures.  If pattern is speci-
  1883.           fied, only those names matching pattern  are  returned.
  1884.           Matching  is  determined  using  the  same rules as for
  1885.           string match.
  1886.  
  1887.      info script
  1888.           If a Tcl script file is currently being evaluated (i.e.
  1889.           there  is  a call to Tcl_EvalFile active or there is an
  1890.           active invocation of the  source  command),  then  this
  1891.           command  returns  the  name of the innermost file being
  1892.           processed.  Otherwise  the  command  returns  an  empty
  1893.           string.
  1894.  
  1895.      info tclversion
  1896.           Returns the version number for this version of  Tcl  in
  1897.           the  form  x.y,  where  changes  to  x  represent major
  1898.           changes with probable incompatibilities and changes  to
  1899.           y  represent  small  enhancements  and  bug  fixes that
  1900.           retain backward compatibility.
  1901.  
  1902.      info vars ?pattern?
  1903.           If pattern isn't specified, returns a list of  all  the
  1904.           names  of  currently-visible  variables, including both
  1905.           locals and currently-visible globals.   If  pattern  is
  1906.           specified,   only  those  names  matching  pattern  are
  1907.           returned.  Matching is determined using the same  rules
  1908.           as for string match.
  1909.  
  1910.  
  1911. KEYWORDS
  1912.      command, information, interpreter, level,  procedure,  vari-
  1913.      able
  1914.  
  1915.  
  1916. _________________________________________________________________
  1917.  
  1918. NAME
  1919.      join - Create a string by joining together list elements
  1920.  
  1921. SYNOPSIS
  1922.      join list ?joinString?
  1923. _________________________________________________________________
  1924.  
  1925.  
  1926. DESCRIPTION
  1927.      The list argument must be a valid Tcl  list.   This  command
  1928.      returns  the string formed by joining all of the elements of
  1929.      list together with joinString separating each adjacent  pair
  1930.      of  elements.   The  joinString argument defaults to a space
  1931.      character.
  1932.  
  1933.  
  1934. KEYWORDS
  1935.      element, join, list, separator
  1936.  
  1937.  
  1938. _________________________________________________________________
  1939.  
  1940. NAME
  1941.      lappend - Append list elements onto a variable
  1942.  
  1943. SYNOPSIS
  1944.      lappend varName value ?value value ...?
  1945. _________________________________________________________________
  1946.  
  1947.  
  1948. DESCRIPTION
  1949.      This command treats the variable given by varName as a  list
  1950.      and  appends  each  of the value arguments to that list as a
  1951.      separate element, with spaces between elements.  If  varName
  1952.      doesn't  exist,  it is created as a list with elements given
  1953.      by the value arguments.  Lappend is similar to append except
  1954.      that  the  values  are appended as list elements rather than
  1955.      raw text.  This command provides a relatively efficient  way
  1956.      to  build  up large lists.  For example, ``lappend a $b'' is
  1957.      much more efficient than ``set a  [concat  $a  [list  $b]]''
  1958.      when $a is long.
  1959.  
  1960.  
  1961. KEYWORDS
  1962.      append, element, list, variable
  1963.  
  1964.  
  1965. _________________________________________________________________
  1966.  
  1967. NAME
  1968.      library - standard library of Tcl procedures
  1969.  
  1970. SYNOPSIS
  1971.      auto_execok cmd
  1972.      auto_load cmd
  1973.      auto_mkindex dir pattern pattern ...
  1974.      auto_reset
  1975.      parray arrayName
  1976.      unknown cmd ?arg arg ...?
  1977. _________________________________________________________________
  1978.  
  1979.  
  1980. INTRODUCTION
  1981.      Tcl includes a library of Tcl procedures for commonly-needed
  1982.      functions.   The  procedures  defined in the Tcl library are
  1983.      generic ones suitable for use  by  many  different  applica-
  1984.      tions.   The  location of the Tcl library is returned by the
  1985.      info library command.  In addition to the Tcl library,  each
  1986.      application  will  normally  have its own library of support
  1987.      procedures as well;  the location of this  library  is  nor-
  1988.      mally  given  by  the value of the $app_library global vari-
  1989.      able, where app is the name of the application.   For  exam-
  1990.      ple,  the location of the Tk library is kept in the variable
  1991.      $tk_library.
  1992.  
  1993. #      To access the procedures in the Tcl library, an  application
  1994. #      should  source the file init.tcl in the library, for example
  1995. #      with the Tcl command
  1996. #           source [info library]/init.tcl
  1997. #      This will define the unknown procedure and arrange  for  the
  1998. #      other  procedures to be loaded on-demand using the auto-load
  1999. #      mechanism defined below.
  2000.  
  2001.  
  2002. COMMAND PROCEDURES
  2003.      The following procedures are provided in the Tcl library:
  2004.  
  2005.      auto_execok cmd
  2006.           Determines whether there is an executable file  by  the
  2007.           name cmd.  This command examines the directories in the
  2008.           current search path  (given  by  the  PATH  enviornment
  2009.           variable)  to  see if there is an executable file named
  2010.           cmd in any of those directories.  If so, it returns  1;
  2011.           if  not  it returns 0.  Auto_exec remembers information
  2012.           about previous searches in an array  named  auto_execs;
  2013.           this  avoids  the  path  search in future calls for the
  2014.           same cmd.  The command auto_reset may be used to  force
  2015.           auto_execok to forget its cached information.
  2016.  
  2017.      auto_load cmd
  2018.           This command attempts to load the definition for a  Tcl
  2019.           command  named  cmd.   To do this, it searches an auto-
  2020.           load path, which is a list of one or more  directories.
  2021.           The  auto-load  path  is  given  by the global variable
  2022.           $auto_path if it exists.  If  there  is  no  $auto_path
  2023.           variable,  then  the TCLLIBPATH environment variable is
  2024.           used, if it exists.  Otherwise the auto-load path  con-
  2025.           sists  of  just the Tcl library directory.  Within each
  2026.           directory in the auto-load path there must  be  a  file
  2027.           tclIndex that describes one or more commands defined in  |
  2028.           that directory and a script to evaluate to load each of  |
  2029.           the  commands.   The  tclIndex file should be generated  |
  2030.           with the auto_mkindex command.  If cmd is found  in  an  |
  2031.           index file, then the appropriate script is evaluated to  |
  2032.           create the command.  The auto_load command returns 1 if
  2033.           cmd was successfully created.  The command returns 0 if
  2034.           there was no index entry  for  cmd  or  if  the  script
  2035.           didn't actually define cmd (e.g. because index informa-
  2036.           tion is out of date).  If an error  occurs  while  pro-
  2037.           cessing  the  script,  then  that  error  is  returned.
  2038.           Auto_load only reads the  index  information  once  and
  2039.           saves  it  in  the  array  auto_index;  future calls to
  2040.           auto_load check for cmd in the array  rather  than  re-
  2041.           reading  the index files.  The cached index information
  2042.           may be deleted with the command auto_reset.  This  will
  2043.           force  the  next  auto_load command to reload the index
  2044.           database from disk.
  2045.  
  2046.      auto_mkindex dir pattern pattern ...
  2047.           Generates an index suitable for use by auto_load.   The  |
  2048.           command  searches  dir  for all files whose names match  |
  2049.           any of the pattern arguments (matching is done with the
  2050.           glob  command),  generates an index of all the Tcl com-
  2051.           mand procedures defined in all the matching files,  and
  2052.           stores  the  index information in a file named tclIndex
  2053.           in dir.  For example, the command
  2054.  
  2055.                auto_mkindex foo *.tcl
  2056.  
  2057.           will read all the .tcl files in  subdirectory  foo  and
  2058.           generate a new index file foo/tclIndex.
  2059.  
  2060.           Auto_mkindex parses the Tcl  scripts  in  a  relatively
  2061.           unsophisticated  way:   if  any  line contains the word
  2062.           proc as its first characters then it is assumed to be a
  2063.           procedure  definition  and the next word of the line is
  2064.           taken as the procedure's name.   Procedure  definitions
  2065.           that  don't  appear  in this way (e.g. they have spaces
  2066.           before the proc) will not be indexed.
  2067.  
  2068.      auto_reset
  2069.           Destroys all the information cached by auto_execok  and
  2070.           auto_load.   This information will be re-read from disk
  2071.           the next time it is needed.   Auto_reset  also  deletes
  2072.           any  procedures  listed in the auto-load index, so that
  2073.           fresh copies of them will be loaded the next time  that
  2074.           they're used.
  2075.  
  2076.      parray arrayName
  2077.           Prints on standard output the names and values  of  all
  2078.           the elements in the array arrayName.  ArrayName must be
  2079.           an array accessible to the caller of parray.  It may be
  2080.           either local or global.
  2081.  
  2082.      unknown cmd ?arg arg ...?
  2083.           This procedure is  invoked  automatically  by  the  Tcl
  2084.           interpreter  whenever  the  name  of  a command doesn't
  2085.           exist.  The unknown procedure receives as its arguments
  2086.           the name and arguments of the missing command.  Unknown  |
  2087.           first calls auto_load to load  the  command.   If  this
  2088.           succeeds,  then  it  executes the original command with
  2089.           its original arguments.  If the  auto-load  fails  then
  2090.           unknown calls auto_execok to see if there is an execut-
  2091.           able file by the name cmd.  If so, it invokes  the  Tcl
  2092.           exec  command  with  cmd and all the args as arguments.
  2093.           If cmd can't be auto-executed, unknown checks to see if
  2094.           the command was invoked at top-level and outside of any
  2095.           script.  If so, then unknown takes takes two additional
  2096.           steps.   First, it sees if cmd has one of the following
  2097.           three forms: !!, !event, or ^old^new?^?.  If  so,  then
  2098.           unknown  carries  out  history substitution in the same
  2099.           way that csh would for these constructs.   Second,  and
  2100.           last, unknown checks to see if cmd is a unique abbrevi-
  2101.           ation for an existing Tcl command.  If so,  it  expands
  2102.           the command name and executes the command with the ori-
  2103.           ginal arguments.  If none of the above efforts has been
  2104.           able to execute the command, unknown generates an error
  2105.           return.  If the global variable auto_noload is defined,
  2106.           then  the  auto-load  step  is  skipped.  If the global
  2107.           variable auto_noexec is defined then the auto-exec step
  2108.           is  skipped.   Under  normal  circumstances  the return
  2109.           value from unknown is the return value from the command
  2110.           that was eventually executed.
  2111.  
  2112.  
  2113. VARIABLES
  2114.      The following global variables are defined or  used  by  the
  2115.      procedures in the Tcl library:
  2116.  
  2117.      auto_execs
  2118.           Used by auto_execok to record information about whether
  2119.           particular commands exist as executable files.
  2120.  
  2121.      auto_index
  2122.           Used by auto_load to save the  index  information  read
  2123.           from disk.
  2124.  
  2125.      auto_noexec
  2126.           If set to any value, then unknown will not  attempt  to
  2127.           auto-exec any commands.
  2128.  
  2129.      auto_noload
  2130.           If set to any value, then unknown will not  attempt  to
  2131.           auto-load any commands.
  2132.  
  2133.      auto_path
  2134.           If set, then it must contain a valid  Tcl  list  giving
  2135.           directories to search during auto-load operations.
  2136.  
  2137.      env(TCL_LIBRARY)
  2138.           If set, then it specifies the location of the directory
  2139.           containing  library scripts (the value of this variable
  2140.           will be returned by the command info library).  If this
  2141.           variable isn't set then a default value is used.
  2142.  
  2143.      env(TCLLIBPATH)
  2144.           If set, then it must contain a valid  Tcl  list  giving
  2145.           directories  to  search  during  auto-load  operations.
  2146.           This variable is only used if auto_path is not defined.
  2147.  
  2148.      unknown_active
  2149.           This variable is set by unknown to indicate that it  is
  2150.           active.   It  is  used  to  detect errors where unknown
  2151.           recurses on itself infinitely.  The variable  is  unset
  2152.           before unknown returns.
  2153.  
  2154.  
  2155. KEYWORDS
  2156.      auto-exec, auto-load, library, unknown
  2157.  
  2158.  
  2159. _________________________________________________________________
  2160.  
  2161. NAME
  2162.      lindex - Retrieve an element from a list
  2163.  
  2164. SYNOPSIS
  2165.      lindex list index
  2166. _________________________________________________________________
  2167.  
  2168.  
  2169. DESCRIPTION
  2170.      This command treats list as  a  Tcl  list  and  returns  the
  2171.      index'th  element  from it (0 refers to the first element of
  2172.      the list).  In extracting the element, lindex  observes  the
  2173.      same  rules  concerning braces and quotes and backslashes as
  2174.      the Tcl command interpreter; however, variable  substitution
  2175.      and command substitution do not occur.  If index is negative
  2176.      or greater than or equal to the number of elements in value,
  2177.      then an empty string is returned.
  2178.  
  2179.  
  2180. KEYWORDS
  2181.      element, index, list
  2182.  
  2183.  
  2184. _________________________________________________________________
  2185.  
  2186. NAME
  2187.      linsert - Insert elements into a list
  2188.  
  2189. SYNOPSIS
  2190.      linsert list index element ?element element ...?
  2191. _________________________________________________________________
  2192.  
  2193.  
  2194. DESCRIPTION
  2195.      This command produces a new list from list by inserting  all
  2196.      of  the element arguments just before the indexth element of
  2197.      list.  Each element argument will become a separate  element
  2198.      of  the  new  list.  If index is less than or equal to zero,
  2199.      then the new elements are inserted at the beginning  of  the
  2200.      list.   If  index  is greater than or equal to the number of
  2201.      elements in the list, then the new elements are appended  to
  2202.      the list.
  2203.  
  2204.  
  2205. KEYWORDS
  2206.      element, insert, list
  2207.  
  2208.  
  2209. _________________________________________________________________
  2210.  
  2211. NAME
  2212.      list - Create a list
  2213.  
  2214. SYNOPSIS
  2215.      list ?arg arg ...?                                            |
  2216. _________________________________________________________________
  2217.  
  2218.  
  2219. DESCRIPTION
  2220.      This command returns a list comprised of all the args, or an  |
  2221.      empty   string   if  no  args  are  specified.   Braces  and
  2222.      backslashes get added as necessary, so that the  index  com-
  2223.      mand  may  be  used on the result to re-extract the original
  2224.      arguments, and also so that eval may be used to execute  the
  2225.      resulting  list, with arg1 comprising the command's name and
  2226.      the other args  comprising  its  arguments.   List  produces
  2227.      slightly  different results than concat:  concat removes one
  2228.      level of grouping before forming the list, while list  works
  2229.      directly from the original arguments.  For example, the com-
  2230.      mand
  2231.  
  2232.           list a b {c d e} {f {g h}}
  2233.      will return
  2234.  
  2235.           a b {c d e} {f {g h}}
  2236.      while concat with the same arguments will return
  2237.  
  2238.           a b c d e f {g h}
  2239.  
  2240.  
  2241. KEYWORDS
  2242.      element, list
  2243.  
  2244.  
  2245. _________________________________________________________________
  2246.  
  2247. NAME
  2248.      llength - Count the number of elements in a list
  2249.  
  2250. SYNOPSIS
  2251.      llength list
  2252. _________________________________________________________________
  2253.  
  2254.  
  2255. DESCRIPTION
  2256.      Treats list as a list and returns a  decimal  string  giving
  2257.      the number of elements in it.
  2258.  
  2259.  
  2260. KEYWORDS
  2261.      element, list, length
  2262.  
  2263.  
  2264. _________________________________________________________________
  2265.  
  2266. NAME
  2267.      lrange - Return one or more adjacent elements from a list
  2268.  
  2269. SYNOPSIS
  2270.      lrange list first last
  2271. _________________________________________________________________
  2272.  
  2273.  
  2274. DESCRIPTION
  2275.      List must be a valid Tcl list.  This command will  return  a
  2276.      new   list   consisting  of  elements  first  through  last,
  2277.      inclusive.  Last may be end (or any abbreviation of  it)  to
  2278.      refer  to  the  last  element of the list.  If first is less
  2279.      than zero, it is treated as if it were  zero.   If  last  is
  2280.      greater than or equal to the number of elements in the list,
  2281.      then it is treated as if it were end.  If first  is  greater
  2282.      than  last then an empty string is returned.  Note: ``lrange
  2283.      list first first'' does not always produce the  same  result
  2284.      as  ``lindex list first'' (although it often does for simple
  2285.      fields that aren't enclosed in braces);  it  does,  however,
  2286.      produce  exactly  the  same  results  as ``list [lindex list
  2287.      first]''
  2288.  
  2289.  
  2290. KEYWORDS
  2291.      element, list, range, sublist
  2292.  
  2293.  
  2294. _________________________________________________________________
  2295.  
  2296. NAME
  2297.      lreplace - Replace elements in a list with new elements
  2298.  
  2299. SYNOPSIS
  2300.      lreplace list first last ?element element ...?
  2301. _________________________________________________________________
  2302.  
  2303.  
  2304. DESCRIPTION
  2305.      Lreplace returns a new list formed by replacing one or  more
  2306.      elements  of  list  with the element arguments.  First gives
  2307.      the index in list of the first element to be  replaced.   If
  2308.      first  is less than zero then it refers to the first element
  2309.      of list;  the element indicated by first must exist  in  the
  2310.      list.   Last  gives the index in list of the last element to
  2311.      be replaced;  it must be greater than  or  equal  to  first.
  2312.      Last may be end (or any abbreviation of it) to indicate that
  2313.      all elements between first and the end of the list should be
  2314.      replaced.   The  element  arguments specify zero or more new
  2315.      arguments to be added to the list in  place  of  those  that
  2316.      were  deleted.  Each element argument will become a separate
  2317.      element of the list.  If no element arguments are specified,
  2318.      then the elements between first and last are simply deleted.
  2319.  
  2320.  
  2321. KEYWORDS
  2322.      element, list, replace
  2323.  
  2324.  
  2325. _________________________________________________________________
  2326.  
  2327. NAME
  2328.      lsearch - See if a list contains a particular element
  2329.  
  2330. SYNOPSIS
  2331.      lsearch ?mode? list pattern
  2332. _________________________________________________________________
  2333.  
  2334.  
  2335. DESCRIPTION
  2336.      This command searches the elements of list to see if one  of
  2337.      them  matches pattern.  If so, the command returns the index
  2338.      of the first matching element.  If not, the command  returns
  2339.      -1.   The  mode  argument  indicates how the elements of the  |
  2340.      list are to be matched against pattern and it must have  one  |
  2341.      of the following values:                                      |
  2342.  
  2343.      -exact                                                             ||
  2344.           The  list  element must contain exactly the same string  |
  2345.           as pattern.                                              |
  2346.  
  2347.      -glob                                                              ||
  2348.           Pattern  is  a  glob-style  pattern  which  is  matched  |
  2349.           against each list element using the same rules  as  the  |
  2350.           string match command.                                    |
  2351.  
  2352.      -regexp                                                            ||
  2353.           Pattern  is treated as a regular expression and matched  |
  2354.           against each list element using the same rules  as  the  |
  2355.           regexp command.                                          |
  2356.  
  2357.      If mode is omitted then it defaults to -glob.
  2358.  
  2359.  
  2360. KEYWORDS
  2361.      list, match, pattern, regular expression, search, string
  2362.  
  2363.  
  2364. _________________________________________________________________
  2365.  
  2366. NAME
  2367.      lsort - Sort the elements of a list
  2368.  
  2369. SYNOPSIS
  2370.      lsort ?switches? list
  2371. _________________________________________________________________
  2372.  
  2373.  
  2374. DESCRIPTION
  2375.      This command sorts the elements of  list,  returning  a  new
  2376.      list in sorted order.  By default ASCII sorting is used with
  2377.      the result returned in increasing order.   However,  any  of  |
  2378.      the  following switches may be specified before list to con-  |
  2379.      trol  the  sorting   process   (unique   abbreviations   are  |
  2380.      accepted):                                                    |
  2381.  
  2382.      -ascii                                                             ||
  2383.                          Use  string comparison with ASCII colla-  |
  2384.                          tion order.  This is the default.         |
  2385.  
  2386.      -ignore                                                             ||
  2387.                          ASCII comparison, ignore case.
  2388.  
  2389.      -integer                                                           ||
  2390.                          Convert  list  elements  to integers and  |
  2391.                          use integer comparison.                   |
  2392.  
  2393.      -real                                                              ||
  2394.                          Convert  list elements to floating-point  |
  2395.                          values and use floating comparison.       |
  2396.  
  2397.      -command command                                                   ||
  2398.                          Use command as a comparison command.  To  |
  2399.                          compare two  elements,  evaluate  a  Tcl  |
  2400.                          script  consisting  of  command with the  |
  2401.                          two  elements  appended  as   additional  |
  2402.                          arguments.   The script should return an  |
  2403.                          integer less than, equal to, or  greater  |
  2404.                          than  zero if the first element is to be  |
  2405.                          considered  less  than,  equal  to,   or  |
  2406.                          greater than the second, respectively.    |
  2407.  
  2408.      -increas-  |
  2409.                          ing                                                        ||
  2410.                          Sort  the  list  in   increasing   order  |
  2411.                          (``smallest'' items first).  This is the  |
  2412.                          default.                                  |
  2413.  
  2414.      -decreas-  |
  2415.                          ing                                                        ||
  2416.                          Sort  the  list  in   decreasing   order  |
  2417.                          (``largest'' items first).
  2418.  
  2419.  
  2420. KEYWORDS
  2421.      element, list, order, sort
  2422.  
  2423.  
  2424. _________________________________________________________________
  2425.  
  2426. NAME
  2427.      open - Open a file
  2428.  
  2429. SYNOPSIS
  2430.      open fileName ?access? ?permissions?                          |
  2431. _________________________________________________________________
  2432.  
  2433.  
  2434. DESCRIPTION
  2435.      This command opens a file and returns an identifier that may
  2436.      be  used  in future invocations of commands like read, puts,
  2437.      and close.  FileName gives the name of the file to open;  if
  2438.      it  starts with a tilde then tilde substitution is performed
  2439.      as described for Tcl_TildeSubst.  If the first character  of
  2440.      fileName  is ``|'' then the remaining characters of fileName
  2441.      are treated as a command pipeline to  invoke,  in  the  same
  2442.      style as for exec.  In this case, the identifier returned by
  2443.      open may be used to write to the  command's  input  pipe  or
  2444.      read from its output pipe.
  2445.  
  2446.      The access argument indicates the way in which the file  (or
  2447.      command pipeline) is to be accessed.  It may take two forms,  |
  2448.      either a string in the form that  would  be  passed  to  the  |
  2449.      fopen library procedure or a list of POSIX access flags.  It  |
  2450.      defaults to ``r''.  In the first form access may have any of  |
  2451.      the following values:
  2452.  
  2453.      r              Open the file for reading only; the file must
  2454.                     already exist.
  2455.  
  2456.      r+             Open the file for both reading  and  writing;
  2457.                     the file must already exist.
  2458.  
  2459.      w              Open the file for writing only.  Truncate  it
  2460.                     if  it exists.  If it doesn't exist, create a
  2461.                     new file.
  2462.  
  2463.      w+             Open the file for reading and writing.  Trun-
  2464.                     cate  it  if it exists.  If it doesn't exist,
  2465.                     create a new file.
  2466.  
  2467.      a              Open the file for  writing  only.   The  file
  2468.                     must  already  exist,  and  the file is posi-
  2469.                     tioned so that new data is  appended  to  the
  2470.                     file.
  2471.  
  2472.      a+             Open the file for reading  and  writing.   If
  2473.                     the  file  doesn't  exist, create a new empty
  2474.                     file.  Set the initial  access  position   to
  2475.                     the end of the file.
  2476.  
  2477.      In the second form, access consists of a list of any of  the  |
  2478.      following  flags, all of which have the standard POSIX mean-  |
  2479.      ings.  One of the flags must be  either  RDONLY,  WRONLY  or  |
  2480.      RDWR.                                                         |
  2481.  
  2482.      RDONLY                                                             ||
  2483.                     Open the file for reading only.                |
  2484.  
  2485.      WRONLY                                                             ||
  2486.                     Open the file for writing only.                |
  2487.  
  2488.      RDWR                                                               ||
  2489.                     Open the file for both reading and writing.    |
  2490.  
  2491.      APPEND                                                             ||
  2492.                     Set  the  file pointer to the end of the file  |
  2493.                     prior to each write.                           |
  2494.  
  2495.      CREAT                                                              ||
  2496.                     Create  the  file if it doesn't already exist  |
  2497.                     (without this flag it is  an  error  for  the  |
  2498.                     file not to exist).                            |
  2499.  
  2500.      EXCL                                                               ||
  2501.                     If  CREAT  is  specified  also,  an  error is  |
  2502.                     returned if the file already exists.           |
  2503.  
  2504.      NOCTTY                                                             ||
  2505.                     If  the  file is a terminal device, this flag  |
  2506.                     prevents the file from becoming the  control-  |
  2507.                     ling terminal of the process.                  |
  2508.  
  2509.      NON-  |
  2510.                     BLOCK                                                           ||
  2511.                     Prevents  the  process  from  blocking  while  |
  2512.                     opening  the file.  For details refer to your  |
  2513.                     system  documentation  on  the  open   system  |
  2514.                     call's O_NONBLOCK flag.                        |
  2515.  
  2516.      TRUNC                                                              ||
  2517.                     If  the  file  exists it is truncated to zero  |
  2518.                     length.                                        |
  2519.  
  2520.      If a new file is created as part of opening it,  permissions  |
  2521.      (an integer) is used to set the permissions for the new file  |
  2522.      in conjunction with the process's file mode  creation  mask.  |
  2523.      Permissions defaults to 0666.
  2524.  
  2525.      If a file is opened for both reading and writing  then  seek
  2526.      must  be  invoked  between a read and a write, or vice versa
  2527.      (this restriction does not apply to command pipelines opened
  2528.      with  open).  When fileName specifies a command pipeline and
  2529.      a write-only access is used, then standard output  from  the
  2530.      pipeline  is  directed to the current standard output unless
  2531.      overridden by the command.  When fileName specifies  a  com-
  2532.      mand  pipeline and a read-only access is used, then standard
  2533.      input from the pipeline is taken from the  current  standard
  2534.      input unless overridden by the command.
  2535.  
  2536.  
  2537. KEYWORDS
  2538.      access mode, append,  controlling  terminal,  create,  file,
  2539.      non-blocking, open, permissions, pipeline, process
  2540.  
  2541.  
  2542. _________________________________________________________________
  2543.  
  2544. NAME
  2545.      pid - Retrieve process id(s)
  2546.  
  2547. SYNOPSIS
  2548.      pid ?fileId?
  2549. _________________________________________________________________
  2550.  
  2551.  
  2552. DESCRIPTION
  2553.      If the fileId argument is  given  then  it  should  normally
  2554.      refer  to  a process pipeline created with the open command.
  2555.      In this case the pid command will return a list  whose  ele-
  2556.      ments  are  the  process identifiers of all the processes in
  2557.      the pipeline, in order.  The list will be  empty  if  fileId
  2558.      refers to an open file that isn't a process pipeline.  If no
  2559.      fileId argument is given then pid returns the process  iden-
  2560.      tifier  of the current process.  All process identifiers are
  2561.      returned as decimal strings.
  2562.  
  2563.  
  2564. KEYWORDS
  2565.      file, pipeline, process identifier
  2566.  
  2567.  
  2568. _________________________________________________________________
  2569.  
  2570. NAME
  2571.      proc - Create a Tcl procedure
  2572.  
  2573. SYNOPSIS
  2574.      proc name args body
  2575. _________________________________________________________________
  2576.  
  2577.  
  2578. DESCRIPTION
  2579.      The proc command creates a new  Tcl  procedure  named  name,
  2580.      replacing  any  existing command or procedure there may have
  2581.      been by that name.  Whenever the new command is invoked, the
  2582.      contents  of  body  will be executed by the Tcl interpreter.
  2583.      Args specifies the formal arguments to  the  procedure.   It
  2584.      consists  of  a list, possibly empty, each of whose elements
  2585.      specifies one argument.  Each argument specifier is  also  a
  2586.      list with either one or two fields.  If there is only a sin-
  2587.      gle field in the specifier then it is the name of the  argu-
  2588.      ment;  if  there are two fields, then the first is the argu-
  2589.      ment name and the second is its default value.
  2590.  
  2591.      When name is invoked a local variable will  be  created  for
  2592.      each  of  the  formal  arguments to the procedure; its value
  2593.      will be the value of corresponding argument in the  invoking
  2594.      command  or  the  argument's  default value.  Arguments with
  2595.      default values need not be specified in a procedure  invoca-
  2596.      tion.   However,  there  must be enough actual arguments for
  2597.      all the formal arguments that don't have defaults, and there
  2598.      must  not  be any extra actual arguments.  There is one spe-
  2599.      cial case to permit  procedures  with  variable  numbers  of
  2600.      arguments.   If  the last formal argument has the name args,
  2601.      then a call to the procedure may contain more  actual  argu-
  2602.      ments  than the procedure has formals.  In this case, all of
  2603.      the actual arguments starting  at  the  one  that  would  be
  2604.      assigned  to  args  are combined into a list (as if the list
  2605.      command had been used); this combined value is  assigned  to
  2606.      the local variable args.
  2607.  
  2608.      When body is being executed, variable names  normally  refer
  2609.      to  local  variables,  which  are created automatically when
  2610.      referenced and deleted  when  the  procedure  returns.   One
  2611.      local  variable  is  automatically  created  for each of the
  2612.      procedure's  arguments.   Global  variables  can   only   be
  2613.      accessed  by  invoking  the global command or the upvar com-
  2614.      mand.
  2615.  
  2616.      The proc command returns an empty string.  When a  procedure
  2617.      is invoked, the procedure's return value is the value speci-
  2618.      fied in a return command.  If the procedure doesn't  execute
  2619.      an  explicit  return,  then its return value is the value of
  2620.      the last command executed in the procedure's  body.   If  an
  2621.      error  occurs  while  executing the procedure body, then the
  2622.      procedure-as-a-whole will return that same error.
  2623.  
  2624.  
  2625. KEYWORDS
  2626.      argument, procedure
  2627.  
  2628.  
  2629. _________________________________________________________________
  2630.  
  2631. NAME
  2632.      puts - Write to a file
  2633.  
  2634. SYNOPSIS
  2635.      puts ?-nonewline? fileId string
  2636. _________________________________________________________________
  2637.  
  2638.  
  2639. DESCRIPTION
  2640.      Writes the characters given by string to the file  given  by
  2641.      fileId.   FileId must have been the return value from a pre-
  2642.      vious call to open; it must refer to a file that was opened
  2643.      for writing. Puts normally outputs a newline
  2644.      character after string, but this feature may  be  suppressed
  2645.      by  specifying  the  -nonewline  switch.  Output to files is
  2646.      buffered internally by Tcl; the flush command may be used to
  2647.      force buffered characters to be output.
  2648.  
  2649.      Note that <stdout> is not supported in Alpha!
  2650.  
  2651. KEYWORDS
  2652.      file, newline, output, write
  2653.  
  2654.  
  2655. _________________________________________________________________
  2656.  
  2657. NAME
  2658.      pwd - Return the current working directory
  2659.  
  2660. SYNOPSIS
  2661.      pwd
  2662. _________________________________________________________________
  2663.  
  2664.  
  2665. DESCRIPTION
  2666.      Returns the path name of the current working directory.
  2667.  
  2668.  
  2669. KEYWORDS
  2670.      working directory
  2671.  
  2672.  
  2673. _________________________________________________________________
  2674.  
  2675. NAME
  2676.      read - Read from a file
  2677.  
  2678. SYNOPSIS
  2679.      read ?-nonewline? fileId
  2680.      read fileId numBytes
  2681. _________________________________________________________________
  2682.  
  2683.  
  2684. DESCRIPTION
  2685.      In the first form, all of the remaining bytes are read  from
  2686.      the file given by fileId; they are returned as the result of
  2687.      the command.  If the -nonewline switch is specified then the
  2688.      last  character of the file is discarded if it is a newline.
  2689.      In the second form, the extra argument  specifies  how  many
  2690.      bytes  to  read;  exactly  this  many bytes will be read and
  2691.      returned, unless there are fewer than numBytes bytes left in
  2692.      the  file;  in  this  case,  all  the  remaining  bytes  are
  2693.      returned.  FileId must be stdin or the return value  from  a
  2694.      previous  call  to  open;  it  must refer to a file that was
  2695.      opened for reading.  Any existing end-of-file or error  con-  |
  2696.      dition  on  the file is cleared at the beginning of the read  |
  2697.      command.
  2698.  
  2699.  
  2700. KEYWORDS
  2701.      file, read
  2702.  
  2703.  
  2704. _________________________________________________________________
  2705.  
  2706. NAME
  2707.      regexp - Match a regular expression against a string
  2708.  
  2709. SYNOPSIS
  2710.      regexp ?switches? exp string  ?matchVar?  ?subMatchVar  sub-
  2711.      MatchVar ...?
  2712. _________________________________________________________________
  2713.  
  2714.  
  2715. DESCRIPTION
  2716.      Determines whether the regular expression exp  matches  part
  2717.      or all of string and returns 1 if it does, 0 if it doesn't.
  2718.  
  2719.      If additional arguments are specified after string then they
  2720.      are  treated  as  the  names of variables in which to return
  2721.      information about  which  part(s)  of  string  matched  exp.
  2722.      MatchVar will be set to the range of string that matched all
  2723.      of exp.  The first subMatchVar will contain  the  characters
  2724.      in string that matched the leftmost parenthesized subexpres-
  2725.      sion within exp, the next subMatchVar will contain the char-
  2726.      acters  that matched the next parenthesized subexpression to
  2727.      the right in exp, and so on.
  2728.  
  2729.      If the initial arguments to regexp start with  -  then  they  |
  2730.      are   treated  as  switches.   The  following  switches  are  |
  2731.      currently supported:                                          |
  2732.  
  2733.      -nocase                                                            ||
  2734.                Causes  upper-case  characters  in  string  to  be  |
  2735.                treated as lower case during the matching process.  |
  2736.  
  2737.      -indices                                                           ||
  2738.                Changes   what  is  stored  in  the  subMatchVars.  |
  2739.                Instead of storing the  matching  characters  from  |
  2740.                string,  each  variable will contain a list of two  |
  2741.                decimal strings giving the indices  in  string  of  |
  2742.                the  first  and  last  characters  in the matching  |
  2743.                range of characters.                                |
  2744.  
  2745.      --                                                                 ||
  2746.                Marks the end of switches.  The argument following  |
  2747.                this one will be treated as exp even if it  starts  |
  2748.                with a -.
  2749.  
  2750.      If there are more subMatchVar's  than  parenthesized  subex-
  2751.      pressions  within  exp,  or if a particular subexpression in
  2752.      exp doesn't match the string (e.g. because it was in a  por-
  2753.      tion  of  the  expression  that  wasn't  matched),  then the
  2754.      corresponding subMatchVar  will  be  set  to  ``-1  -1''  if
  2755.      -indices has been specified or to an empty string otherwise.
  2756.  
  2757. REGULAR EXPRESSIONS
  2758.      Regular expressions are implemented  using  Henry  Spencer's
  2759.      package  (thanks,  Henry!),  and  much of the description of
  2760.      regular expressions below is copied verbatim from his manual
  2761.      entry.
  2762.  
  2763.      A regular expression is zero or more branches, separated  by
  2764.      ``|''.    It  matches  anything  that  matches  one  of  the
  2765.      branches.
  2766.  
  2767.      A branch is zero or more pieces, concatenated.  It matches a
  2768.      match  for  the  first,  followed by a match for the second,
  2769.      etc.
  2770.  
  2771.      A piece is an atom possibly followed  by  ``*'',  ``+'',  or
  2772.      ``?''.  An atom followed by ``*'' matches a sequence of 0 or
  2773.      more matches of the atom.  An atom followed by ``+'' matches
  2774.      a  sequence  of 1 or more matches of the atom.  An atom fol-
  2775.      lowed by ``?'' matches a match of  the  atom,  or  the  null
  2776.      string.
  2777.  
  2778.      An atom is a regular expression in parentheses  (matching  a
  2779.      match  for  the  regular  expression),  a range (see below),
  2780.      ``.'' (matching any single character), ``^''  (matching  the
  2781.      null  string  at  the  beginning of the input string), ``$''
  2782.      (matching the null string at the end of the input string), a
  2783.      ``\''  followed by a single character (matching that charac-
  2784.      ter), or a  single  character  with  no  other  significance
  2785.      (matching that character).
  2786.  
  2787.      A range is a sequence of characters enclosed in ``[]''.   It
  2788.      normally matches any single character from the sequence.  If
  2789.      the sequence begins with ``^'', it matches any single  char-
  2790.      acter  not from the rest of the sequence.  If two characters
  2791.      in the sequence are separated by ``-'',  this  is  shorthand
  2792.      for  the  full  list  of ASCII characters between them (e.g.
  2793.      ``[0-9]'' matches any decimal digit).  To include a  literal
  2794.      ``]''  in the sequence, make it the first character (follow-
  2795.      ing a possible ``^'').  To include a literal ``-'', make  it
  2796.      the first or last character.
  2797.  
  2798.  
  2799. CHOOSING AMONG ALTERNATIVE MATCHES
  2800.      In general there may be more than one way to match a regular
  2801.      expression  to  an  input string.  For example, consider the
  2802.      command
  2803.  
  2804.           regexp  (a*)b*  aabaaabb  x  y
  2805.      Considering only the rules given so far, x and y  could  end
  2806.      up  with  the values aabb and aa, aaab and aaa, ab and a, or
  2807.      any of several other combinations.  To resolve  this  poten-
  2808.      tial  ambiguity  regexp chooses among alternatives using the
  2809.      rule ``first then longest''.  In other  words,  it  consders
  2810.      the  possible  matches  in  order working from left to right
  2811.      across the input string and the pattern, and it attempts  to
  2812.      match longer pieces of the input string before shorter ones.
  2813.      More specifically, the following rules apply  in  decreasing
  2814.      order of priority:
  2815.  
  2816.      [1]  If a regular expression could match two different parts
  2817.           of  an  input  string  then  it will match the one that
  2818.           begins earliest.
  2819.  
  2820.      [2]  If a regular expression contains | operators  then  the
  2821.           leftmost matching sub-expression is chosen.
  2822.  
  2823.      [3]  In *, +, and ? constructs, longer matches are chosen in
  2824.           preference to shorter ones.
  2825.  
  2826.      [4]  In sequences of expression  components  the  components
  2827.           are considered from left to right.
  2828.  
  2829.      In the example from above, (a*)b*  matches  aab:   the  (a*)
  2830.      portion  of the pattern is matched first and it consumes the
  2831.      leading aa; then the b* portion of the pattern consumes  the
  2832.      next b.  Or, consider the following example:
  2833.  
  2834.           regexp  (ab|a)(b*)c  abc  x  y  z
  2835.      After this command x will be abc, y will be ab, and  z  will
  2836.      be an empty string.  Rule 4 specifies that (ab|a) gets first
  2837.      shot at the input string and Rule 2 specifies  that  the  ab
  2838.      sub-expression is checked before the a sub-expression.  Thus
  2839.      the b has already been claimed before the (b*) component  is
  2840.      checked and (b*) must match an empty string.
  2841.  
  2842.  
  2843. KEYWORDS
  2844.      match, regular expression, string
  2845.  
  2846.  
  2847. _________________________________________________________________
  2848.  
  2849. NAME
  2850.      regsub - Perform substitutions based on  regular  expression
  2851.      pattern matching
  2852.  
  2853. SYNOPSIS
  2854.      regsub ?switches? exp string subSpec varName
  2855. _________________________________________________________________
  2856.  
  2857.  
  2858. DESCRIPTION
  2859.      This command matches  the  regular  expression  exp  against
  2860.      string,  and  it copies string to the variable whose name is  |
  2861.      given by varName.  The command returns 1 if there is a match  |
  2862.      and 0 if there isn't.  If there is a match, then while copy-  |
  2863.      ing string to varName the portion of string that matched exp
  2864.      is  replaced  with  subSpec.  If subSpec contains a ``&'' or
  2865.      ``\0'', then it is replaced in  the  substitution  with  the
  2866.      portion  of  string that matched exp.  If subSpec contains a
  2867.      ``\n'', where n is a digit between  1  and  9,  then  it  is
  2868.      replaced in the substitution with the portion of string that
  2869.      matched the n-th parenthesized subexpression of exp.   Addi-
  2870.      tional backslashes may be used in subSpec to prevent special
  2871.      interpretation of ``&'' or ``\0'' or  ``\n''  or  backslash.
  2872.      The  use  of  backslashes in subSpec tends to interact badly
  2873.      with the Tcl parser's use of backslashes, so it's  generally
  2874.      safest   to   enclose  subSpec  in  braces  if  it  includes
  2875.      backslashes.
  2876.  
  2877.      If the initial arguments to regexp start with  -  then  they  |
  2878.      are   treated  as  switches.   The  following  switches  are  |
  2879.      currently supported:                                          |
  2880.  
  2881.      -all                                                               ||
  2882.                All  ranges in string that match exp are found and  |
  2883.                substitution  is  performed  for  each  of   these  |
  2884.                ranges.  Without this switch only the first match-  |
  2885.                ing range is found and substituted.   If  -all  is  |
  2886.                specified,  then  ``&''  and  ``\n'' sequences are  |
  2887.                handled for each substitution using  the  informa-  |
  2888.                tion from the corresponding match.                  |
  2889.  
  2890.      -nocase                                                            ||
  2891.                Upper-case  characters in string will be converted  |
  2892.                to lower-case before matching against  exp;   how-  |
  2893.                ever,  substitutions  specified by subSpec use the  |
  2894.                original unconverted form of string.                |
  2895.  
  2896.      --                                                                 ||
  2897.                Marks the end of switches.  The argument following  |
  2898.                this one will be treated as exp even if it  starts  |
  2899.                with a -.
  2900.  
  2901.      See the manual entry for regexp for details on the interpre-
  2902.      tation of regular expressions.
  2903.  
  2904.  
  2905. KEYWORDS
  2906.      match, pattern, regular expression, substitute
  2907.  
  2908.  
  2909. _________________________________________________________________
  2910.  
  2911. NAME
  2912.      rename - Rename or delete a command
  2913.  
  2914. SYNOPSIS
  2915.      rename oldName newName
  2916. _________________________________________________________________
  2917.  
  2918.  
  2919. DESCRIPTION
  2920.      Rename the command that used to be called oldName so that it
  2921.      is  now  called newName.  If newName is an empty string then
  2922.      oldName is deleted.  The rename  command  returns  an  empty
  2923.      string as result.
  2924.  
  2925.  
  2926. KEYWORDS
  2927.      command, delete, rename
  2928.  
  2929.  
  2930. _________________________________________________________________
  2931.  
  2932. NAME
  2933.      return - Return from a procedure
  2934.  
  2935. SYNOPSIS
  2936.      return ?-code  code?  ?-errorinfo  info?  ?-errorcode  code?
  2937.      ?string?
  2938. _________________________________________________________________
  2939.  
  2940.  
  2941. DESCRIPTION
  2942.      Return immediately from the current procedure (or  top-level
  2943.      command or source command), with string as the return value.
  2944.      If string is not specified then  an  empty  string  will  be
  2945.      returned as result.
  2946.  
  2947.  
  2948. EXCEPTIONAL RETURNS
  2949.      In the usual case where the -code option isn't specified the  |
  2950.      procedure  will return normally (its completion code will be  |
  2951.      TCL_OK).  However, the -code option may be used to  generate  |
  2952.      an exceptional return from the procedure.  Code may have any  |
  2953.      of the following values:                                      |
  2954.  
  2955.      ok                                                                 ||
  2956.                Normal return:  same as if the option is omitted.   |
  2957.  
  2958.      error                                                              ||
  2959.                Error  return:  same  as if the error command were  |
  2960.                used to terminate the procedure, except  for  han-  |
  2961.                dling  of  errorInfo  and errorCode variables (see  |
  2962.                below).                                             |
  2963.  
  2964.      return                                                             ||
  2965.                The  current  procedure will return with a comple-  |
  2966.                tion code of TCL_RETURN,  so  that  the  procedure  |
  2967.                that invoked it will return also.                   |
  2968.  
  2969.      break                                                              ||
  2970.                The  current  procedure will return with a comple-  |
  2971.                tion code of TCL_BREAK, which will  terminate  the  |
  2972.                innermost nested loop in the code that invoked the  |
  2973.                current procedure.                                  |
  2974.  
  2975.      con-  |
  2976.                tinue                                                           ||
  2977.                The current procedure will return with  a  comple-  |
  2978.                tion  code  of  TCL_CONTINUE, which will terminate  |
  2979.                the current iteration of the innermost nested loop  |
  2980.                in the code that invoked the current procedure.     |
  2981.  
  2982.      value                                                              ||
  2983.                Value  must be an integer;  it will be returned as  |
  2984.                the completion code for the current procedure.      |
  2985.  
  2986.      The -code option is rarely used.  It  is  provided  so  that  |
  2987.      procedures that implement new control structures can reflect  |
  2988.      exceptional conditions back to their callers.                 |
  2989.  
  2990.      Two additional options, -errorinfo and  -errorcode,  may  be  |
  2991.      used to provide additional information during error returns.  |
  2992.      These options are ignored unless code is error.               |
  2993.  
  2994.      The -errorinfo option specifies an initial stack  trace  for  |
  2995.      the  errorInfo  variable;   if  it is not specified then the  |
  2996.      stack trace left in errorInfo will include the call  to  the  |
  2997.      procedure  and  higher  levels  on the stack but it will not  |
  2998.      include any information  about  the  context  of  the  error  |
  2999.      within  the procedure.  Typically the info value is supplied  |
  3000.      from the value left  in  errorInfo  after  a  catch  command  |
  3001.      trapped an error within the procedure.                        |
  3002.  
  3003.      If the -errorcode option is specified then code  provides  a  |
  3004.      value  for  the  errorCode  variable.   If the option is not  |
  3005.      specified then errorCode will default to NONE.
  3006.  
  3007.  
  3008. KEYWORDS
  3009.      break, continue, error, procedure, return
  3010.  
  3011.  
  3012. _________________________________________________________________
  3013.  
  3014. NAME
  3015.      scan - Parse string using conversion specifiers in the style
  3016.      of sscanf
  3017.  
  3018. SYNOPSIS
  3019.      scan string format varName ?varName ...?
  3020. _________________________________________________________________
  3021.  
  3022.  
  3023. INTRODUCTION
  3024.      This command parses fields from an input string in the  same
  3025.      fashion  as  the ANSI C sscanf procedure and returns a count
  3026.      of the number of fields sucessfully  parsed.   String  gives
  3027.      the input to be parsed and format indicates how to parse it,
  3028.      using % conversion specifiers as in  sscanf.   Each  varName
  3029.      gives  the  name of a variable; when a field is scanned from
  3030.      string the result  is  converted  back  into  a  string  and
  3031.      assigned to the corresponding variable.
  3032.  
  3033.  
  3034. DETAILS ON SCANNING
  3035.      Scan operates by scanning string and formatString  together.
  3036.      If the next character in formatString is a blank or tab then
  3037.      it is ignored.  Otherwise, if it isn't a % character then it
  3038.      must  match  the  next  non-white-space character of string.
  3039.      When a % is encountered in formatString,  it  indicates  the
  3040.      start  of  a  conversion  specifier.  A conversion specifier
  3041.      contains three fields after the %: a *, which indicates that
  3042.      the  converted  value is to be discarded instead of assigned
  3043.      to a variable; a number indicating a  maximum  field  width;
  3044.      and  a  conversion  character.   All  of  these  fields  are
  3045.      optional except for the conversion character.
  3046.  
  3047.      When scan finds a conversion specifier in  formatString,  it
  3048.      first  skips  any white-space characters in string.  Then it
  3049.      converts the next input characters according to the  conver-
  3050.      sion  specifier  and stores the result in the variable given
  3051.      by the next argument  to  scan.   The  following  conversion
  3052.      characters are supported:
  3053.  
  3054.      d         The input field must be a decimal integer.  It  is
  3055.                read in and the value is stored in the variable as
  3056.                a decimal string.
  3057.  
  3058.      o         The input field must be an octal  integer.  It  is
  3059.                read in and the value is stored in the variable as
  3060.                a decimal string.
  3061.  
  3062.      x         The input field must be a hexadecimal integer.  It
  3063.                is read in and the value is stored in the variable
  3064.                as a decimal string.
  3065.  
  3066.      c         A single character is read in and its binary value
  3067.                is  stored  in  the  variable as a decimal string.
  3068.                Initial white space is not skipped in  this  case,
  3069.                so the input field may be a white-space character.
  3070.                This conversion is different from the  ANSI  stan-
  3071.                dard  in that the input field always consists of a
  3072.                single character and no field width may be  speci-
  3073.                fied.
  3074.  
  3075.      s         The input field consists of all the characters  up
  3076.                to  the next white-space character; the characters
  3077.                are copied to the variable.
  3078.  
  3079.      e or f or g
  3080.                The input field must be  a  floating-point  number
  3081.                consisting  of  an  optional  sign,  a  string  of
  3082.                decimal digits  possibly  con  taining  a  decimal
  3083.                point, and an optional exponent consisting of an e
  3084.                or E followed by an optional sign and a string  of
  3085.                decimal  digits.   It is read in and stored in the
  3086.                variable as a floating-point string.
  3087.  
  3088.      [chars]   The input field consists of any number of  charac-
  3089.                ters  in  chars.  The matching string is stored in
  3090.                the variable.  If the first character between  the
  3091.                brackets  is  a  ]  then  it is treated as part of
  3092.                chars rather than the closing bracket for the set.
  3093.  
  3094.      [^chars]  The input field consists of any number of  charac-
  3095.                ters  not in chars.  The matching string is stored
  3096.                in the variable.   If  the  character  immediately
  3097.                following  the ^ is a ] then it is treated as part
  3098.                of the set rather than the closing bracket for the
  3099.                set.
  3100.  
  3101.      The number of characters read from the input for  a  conver-
  3102.      sion is the largest number that makes sense for that partic-
  3103.      ular conversion (e.g.  as many decimal  digits  as  possible
  3104.      for %d, as many octal digits as possible for %o, and so on).
  3105.      The input field for a  given  conversion  terminates  either
  3106.      when a white-space character is encountered or when the max-
  3107.      imum field width has been reached,  whichever  comes  first.
  3108.      If  a * is present in the conversion specifier then no vari-
  3109.      able is assigned and the next scan argument is not consumed.
  3110.  
  3111.  
  3112. DIFFERENCES FROM ANSI SSCANF
  3113.      The behavior of the scan command is the same as the behavior
  3114.      of  the  ANSI  C  sscanf  procedure except for the following
  3115.      differences:
  3116.  
  3117.      [1]  %p and %n conversion specifiers are not currently  sup-  |
  3118.           ported.
  3119.  
  3120.      [2]  For %c conversions a single  character  value  is  con-
  3121.           verted  to  a decimal string, which is then assigned to
  3122.           the corresponding varName; no field width may be speci-
  3123.           fied for this conversion.
  3124.  
  3125.      [3]  The l, h, and L modifiers are ignored;  integer  values  |
  3126.           are  always  converted  as  if  there  were no modifier  |
  3127.           present and real values are always converted as if  the  |
  3128.           l  modifier  were present (i.e. type double is used for  |
  3129.           the internal representation).
  3130.  
  3131.  
  3132. KEYWORDS
  3133.      conversion specifier, parse, scan
  3134.  
  3135.  
  3136. FILE SCANNING COMMANDS
  3137.      These commands provide a facility to  scan  files,  matching
  3138.      lines  of the file against regular expressions and executing
  3139.      Tcl code on a match.  With this facility you can use Tcl  to
  3140.      do  the  sort  of file processing that is traditionally done
  3141.      with awk.  And since Tcl's  approach  is  more  declarative,
  3142.      some of the scripts that can be rather difficult to write in
  3143.      awk are simple to code in Tcl.
  3144.  
  3145.      File scanning in Tcl centers around the concept  of  a  scan
  3146.      context.   A  scan context contains one or more match state-
  3147.      ments, which associate regular expressions to scan for  with
  3148.      Tcl code to be executed when the expressions are matched.
  3149.  
  3150.      scancontext ?option?
  3151.           This command manages file scan contexts.  A  scan  con-
  3152.           text  is  a  collection of regular expressions and com-
  3153.           mands to execute when that regular expression matches a
  3154.           line  of  the  file.   A context may also have a single
  3155.           default match, to be applied against lines that do  not
  3156.           match  any  of  the regular expressions.  Multiple scan
  3157.           contexts may be defined and they may be reused on  mul-
  3158.           tiple files.  A scan context is identified by a context
  3159.           handle.  The scancontext command  takes  the  following
  3160.           forms:
  3161.  
  3162.      scancontext create
  3163.           Create a new scan context.  The  scanmatch  command  is
  3164.           used  to define patterns in the context.  A contexthan-
  3165.           dle is returned, which the Tcl programmer uses to refer
  3166.           to  the  newly created scan context in calls to the Tcl
  3167.           file scanning commands.
  3168.  
  3169.      scancontext delete contexthandle
  3170.           Delete the scan context  identified  by  contexthandle,
  3171.           and free all of the match statements and compiled regu-
  3172.           lar expressions associated with the specified context.
  3173.  
  3174.      scanfile ?-copyfile copyFileId? contexthandle fileId
  3175.           Scan the file specified by fileId,  starting  from  the
  3176.           current  file position.  Check all patterns in the scan
  3177.           context specified by contexthandle against it,  execut-
  3178.           ing   the  match  commands  corresponding  to  patterns
  3179.           matched.
  3180.  
  3181.           If the optional -copyfile argument  is  specified,  the
  3182.           next  argument  is  a  file  ID  to which all lines not
  3183.           matched by any pattern (excluding the default  pattern)
  3184.           are to be written.
  3185.  
  3186.      scanmatch ?-nocase? contexthandle ?regexp? commands
  3187.           Specify Tcl commands, to be evaluated  when  regexp  is
  3188.           matched  by  a scanfile command.  The match is added to
  3189.           the  scan  context  specified  by  contexthandle.   Any
  3190.           number  of match statements may be specified for a give
  3191.           context.  Regexp  is  a  regular  expression  (see  the
  3192.           regexp  command).  If -nocase is specified as the first
  3193.           argument, the pattern is matched regardless  of  alpha-
  3194.           betic case.
  3195.  
  3196.           If regexp is not specified, then  a  default  match  is
  3197.           specified for the scan context.  The default match will
  3198.           be executed when a line of the file does not match  any
  3199.           of the regular expressions in the current scancontext.
  3200.  
  3201.           The array matchInfo is available to the Tcl  code  that
  3202.           is  executed  when an expression matches (or defaults).
  3203.           It contans information about the file being scanned and
  3204.           where within it the expression was matched.
  3205.  
  3206.           matchInfo is local to the top level of the  match  com-
  3207.           mand  unless  declared  global at that level by the Tcl
  3208.           global command.  If it is to be used as  a  global,  it
  3209.           must  be  declared  global  before  scanfile  is called
  3210.           (since scanfile sets the  matchInfo  before  the  match
  3211.           code is executed, a subsequent global will override the
  3212.           local  variable).   The  following  array  entries  are
  3213.           available:
  3214.  
  3215.           matchInfo(line)
  3216.                Contains the text of the line of the file that was
  3217.                matched.
  3218.  
  3219.           matchInfo(offset)
  3220.                The byte offset into the file of the first charac-
  3221.                ter of the line that was matched.
  3222.  
  3223.           matchInfo(linenum)
  3224.                The line number of the line that was matched. This
  3225.                is  relative  to  the first line scanned, which is
  3226.                usually, but not necessarily, the  first  line  of
  3227.                the file.  The first line is line number one.
  3228.  
  3229.           matchInfo(handle)
  3230.                The file id (handle) of the file  currently  being
  3231.                scanned.
  3232.  
  3233.           matchInfo(copyHandle)
  3234.                The file id (handle) of the file specified by  the
  3235.                -copyfile  option.   The element does not exist if
  3236.                -copyfile was not specified.
  3237.  
  3238.           matchInfo(submatch0)
  3239.                Will contain the  characters  matching  the  first
  3240.                parenthesized  subexpression.   The second will be
  3241.                contained in submatch1, etc.
  3242.  
  3243.           matchInfo(subindex0)
  3244.                Will contain the a list of the starting and ending
  3245.                indices   of   the   string   matching  the  first
  3246.                parenthesized subexpression.  The second  will  be
  3247.                contained in subindex1, etc.
  3248.  
  3249.      All scanmatch patterns that match a line will  be  processed
  3250.      in the order in which their specifications were added to the
  3251.      scan context.   The  remainder  of  the  scanmatch  pattern-
  3252.      command  pairs  may be skipped for a file line if a continue
  3253.      is executed by the Tcl code of a preceding, matched pattern.
  3254.  
  3255.      If a return is executed in the body of  the  match  command,
  3256.      the scanfile command currently in progress returns, with the
  3257.      value passed to return as its return value.
  3258.  
  3259.  
  3260. _________________________________________________________________
  3261.  
  3262. NAME
  3263.      seek - Change the access position for an open file
  3264.  
  3265. SYNOPSIS
  3266.      seek fileId offset ?origin?
  3267. _________________________________________________________________
  3268.  
  3269.  
  3270. DESCRIPTION
  3271.      Change the current access position for fileId.  FileId  must
  3272.      have  been the return value from a previous call to open, or
  3273.      it may be stdin, stdout, or stderr to refer to  one  of  the
  3274.      standard  I/O  channels.   The  offset  and origin arguments
  3275.      specify the position at which the next read  or  write  will
  3276.      occur  for  fileId.  Offset must be an integer (which may be
  3277.      negative) and origin must be one of the following:
  3278.  
  3279.      start
  3280.           The new access position will be offset bytes  from  the
  3281.           start of the file.
  3282.  
  3283.      current
  3284.           The new access position will be offset bytes  from  the
  3285.           current  access  position;  a negative offset moves the
  3286.           access position backwards in the file.
  3287.  
  3288.      end  The new access position will be offset bytes  from  the
  3289.           end  of  the file.  A negative offset places the access
  3290.           position before the end-of-file, and a positive  offset
  3291.           places the access position after the end-of-file.
  3292.  
  3293.      The origin argument defaults to start.  This command returns
  3294.      an empty string.
  3295.  
  3296.  
  3297. KEYWORDS
  3298.      access position, file, seek
  3299.  
  3300.  
  3301. _________________________________________________________________
  3302.  
  3303. NAME
  3304.      set - Read and write variables
  3305.  
  3306. SYNOPSIS
  3307.      set varName ?value?
  3308. _________________________________________________________________
  3309.  
  3310.  
  3311. DESCRIPTION
  3312.      Returns the value of variable varName.  If value  is  speci-
  3313.      fied, then set the value of varName to value, creating a new
  3314.      variable if one doesn't already exist, and return its value.
  3315.      If  varName  contains  an  open  parenthesis and ends with a
  3316.      close parenthesis, then it refers to an array element:   the
  3317.      characters before the first open parenthesis are the name of
  3318.      the array, and the characters between  the  parentheses  are
  3319.      the  index  within the array.  Otherwise varName refers to a
  3320.      scalar variable.  If no procedure is  active,  then  varName
  3321.      refers to a global variable.  If a procedure is active, then
  3322.      varName refers to a parameter or local variable of the  pro-
  3323.      cedure unless the global command has been invoked to declare
  3324.      varName to be global.
  3325.  
  3326.  
  3327. KEYWORDS
  3328.      read, write, variable
  3329.  
  3330.  
  3331. _________________________________________________________________
  3332.  
  3333. NAME
  3334.      source - Evaluate a file as a Tcl script
  3335.  
  3336. SYNOPSIS
  3337.      source fileName
  3338. _________________________________________________________________
  3339.  
  3340.  
  3341. DESCRIPTION
  3342.      Read file fileName and pass the contents to the  Tcl  inter-
  3343.      preter  as  a script to evaluate in the normal fashion.  The
  3344.      return value from source is the return  value  of  the  last
  3345.      command  executed  from  the  file.   If  an error occurs in
  3346.      evaluating the contents of the file then the source  command
  3347.      will return that error.  If a return command is invoked from
  3348.      within the file then the  remainder  of  the  file  will  be
  3349.      skipped and the source command will return normally with the
  3350.      result from the return command.  If fileName starts  with  a
  3351.      tilde,  then  it  is  tilde-substituted  as described in the
  3352.      Tcl_TildeSubst manual entry.
  3353.  
  3354.  
  3355. KEYWORDS
  3356.      file, script
  3357.  
  3358.  
  3359. _________________________________________________________________
  3360.  
  3361. NAME
  3362.      split - Split a string into a proper Tcl list
  3363.  
  3364. SYNOPSIS
  3365.      split string ?splitChars?
  3366. _________________________________________________________________
  3367.  
  3368.  
  3369. DESCRIPTION
  3370.      Returns a list created by splitting string at each character
  3371.      that  is  in  the  splitChars argument.  Each element of the
  3372.      result list will consist of the characters from string  that
  3373.      lie  between  instances  of  the  characters  in splitChars.
  3374.      Empty list elements will be  generated  if  string  contains
  3375.      adjacent  characters  in splitChars, or if the first or last
  3376.      character of string is in splitChars.  If splitChars  is  an
  3377.      empty  string  then  each  character  of  string  becomes  a
  3378.      separate element of the result list.  SplitChars defaults to
  3379.      the standard white-space characters.  For example,
  3380.  
  3381.           split "comp.unix.misc" .
  3382.      returns "comp unix misc" and
  3383.  
  3384.           split "Hello world" {}
  3385.      returns "H e l l o { } w o r l d".
  3386.  
  3387.  
  3388. KEYWORDS
  3389.      list, split, string
  3390.  
  3391.  
  3392. _________________________________________________________________
  3393.  
  3394. NAME
  3395.      string - Manipulate strings
  3396.  
  3397. SYNOPSIS
  3398.      string option arg ?arg ...?
  3399. _________________________________________________________________
  3400.  
  3401.  
  3402. DESCRIPTION
  3403.      Performs one of  several  string  operations,  depending  on
  3404.      option.  The legal options (which may be abbreviated) are:
  3405.  
  3406.      string compare string1 string2
  3407.           Perform a character-by-character comparison of  strings
  3408.           string1  and  string2  in  the same way as the C strcmp
  3409.           procedure.  Return -1, 0, or 1,  depending  on  whether
  3410.           string1  is  lexicographically  less than, equal to, or
  3411.           greater than string2.
  3412.  
  3413.      string first string1 string2
  3414.           Search  string2  for  a  sequence  of  characters  that
  3415.           exactly  match  the  characters  in string1.  If found,
  3416.           return the index of the first character  in  the  first
  3417.           such match within string2.  If not found, return -1.
  3418.  
  3419.      string index string charIndex
  3420.           Returns the charIndex'th character of the string  argu-
  3421.           ment.   A charIndex of 0 corresponds to the first char-
  3422.           acter of the string.  If charIndex is less  than  0  or
  3423.           greater  than or equal to the length of the string then
  3424.           an empty string is returned.
  3425.  
  3426.      string last string1 string2
  3427.           Search  string2  for  a  sequence  of  characters  that
  3428.           exactly  match  the  characters  in string1.  If found,
  3429.           return the index of the first  character  in  the  last
  3430.           such  match within string2.  If there is no match, then
  3431.           return -1.
  3432.  
  3433.      string length string
  3434.           Returns a decimal string giving the number  of  charac-
  3435.           ters in string.
  3436.  
  3437.      string match pattern string
  3438.           See if pattern matches string; return 1 if it  does,  0
  3439.           if  it  doesn't.  Matching is done in a fashion similar
  3440.           to that used by the C-shell.  For the  two  strings  to
  3441.           match, their contents must be identical except that the
  3442.           following special sequences may appear in pattern:
  3443.  
  3444.           *         Matches any sequence of characters in string,
  3445.                     including a null string.
  3446.  
  3447.           ?         Matches any single character in string.
  3448.  
  3449.           [chars]   Matches any character in  the  set  given  by
  3450.                     chars.  If a sequence of the form x-y appears
  3451.                     in chars, then any character between x and y,
  3452.                     inclusive, will match.
  3453.  
  3454.           \x        Matches the single character  x.   This  pro-
  3455.                     vides a way of avoiding the special interpre-
  3456.                     tation of the characters *?[]\ in pattern.
  3457.  
  3458.      string range string first last
  3459.           Returns a range of consecutive characters from  string,
  3460.           starting  with  the  character whose index is first and
  3461.           ending with the character  whose  index  is  last.   An
  3462.           index of 0 refers to the first character of the string.
  3463.           Last may be end (or any abbreviation of it) to refer to
  3464.           the  last  character  of  the string.  If first is less
  3465.           than zero then it is treated as if it were zero, and if
  3466.           last  is  greater  than  or  equal to the length of the
  3467.           string then it is treated as if it were end.  If  first
  3468.           is greater than last then an empty string is returned.
  3469.  
  3470.      string tolower string
  3471.           Returns a value equal to string except that  all  upper
  3472.           case letters have been converted to lower case.
  3473.  
  3474.      string toupper string
  3475.           Returns a value equal to string except that  all  lower
  3476.           case letters have been converted to upper case.
  3477.  
  3478.      string trim string ?chars?
  3479.           Returns a value equal to string except that any leading
  3480.           or  trailing characters from the set given by chars are
  3481.           removed.  If chars is not specified then white space is
  3482.           removed (spaces, tabs, newlines, and carriage returns).
  3483.  
  3484.      string trimleft string ?chars?
  3485.           Returns a value equal to string except that any leading
  3486.           characters from the set given by chars are removed.  If
  3487.           chars is not specified  then  white  space  is  removed
  3488.           (spaces, tabs, newlines, and carriage returns).
  3489.  
  3490.      string trimright string ?chars?
  3491.           Returns a value equal to string except that any  trail-
  3492.           ing characters from the set given by chars are removed.
  3493.           If chars is not specified then white space  is  removed
  3494.           (spaces, tabs, newlines, and carriage returns).
  3495.  
  3496.  
  3497. KEYWORDS
  3498.      case conversion, compare, index, match, pattern, string
  3499.  
  3500.  
  3501. _________________________________________________________________
  3502.  
  3503. NAME
  3504.      switch - Evaluate one of several  scripts,  depending  on  a
  3505.      given value
  3506.  
  3507. SYNOPSIS
  3508.      switch ?options? string pattern body ?pattern body ...?
  3509.      switch ?options? string {pattern body ?pattern body ...?}
  3510. _________________________________________________________________
  3511.  
  3512.  
  3513. DESCRIPTION
  3514.      The switch command matches its string argument against  each
  3515.      of  the  pattern  arguments in order.  As soon as it finds a
  3516.      pattern that matches string it evaluates the following  body
  3517.      argument  by  passing  it recursively to the Tcl interpreter
  3518.      and returns the result of that evaluation.  If the last pat-
  3519.      tern  argument  is  default then it matches anything.  If no
  3520.      pattern argument matches string and  no  default  is  given,
  3521.      then the switch command returns an empty string.
  3522.  
  3523.      If the initial arguments to switch start with  -  then  they
  3524.      are treated as options.  The following options are currently
  3525.      supported:
  3526.  
  3527.      -exact    Use exact matching when comparing string to a pat-
  3528.                tern.  This is the default.
  3529.  
  3530.      -glob     When matching string to the  patterns,  use  glob-
  3531.                style  matching  (i.e.  the same as implemented by
  3532.                the string match command).
  3533.  
  3534.      -regexp   When matching string to the patterns, use  regular
  3535.                expression  matching (i.e. the same as implemented
  3536.                by the regexp command).
  3537.  
  3538.      --        Marks the end of options.  The argument  following
  3539.                this  one  will  be  treated  as string even if it
  3540.                starts with a -.
  3541.  
  3542.      Two syntaxes are provided for the  pattern  and  body  argu-
  3543.      ments.   The  first uses a separate argument for each of the
  3544.      patterns and commands; this form is convenient if  substitu-
  3545.      tions  are desired on some of the patterns or commands.  The
  3546.      second form places all of the patterns and commands together
  3547.      into  a  single argument; the argument must have proper list
  3548.      structure, with the elements of the list being the  patterns
  3549.      and  commands.   The  second form makes it easy to construct
  3550.      multi-line switch commands,  since  the  braces  around  the
  3551.      whole list make it unnecessary to include a backslash at the
  3552.      end of each line.  Since the pattern arguments are in braces
  3553.      in the second form, no command or variable substitutions are
  3554.      performed on them;  this makes the behavior  of  the  second
  3555.      form different than the first form in some cases.
  3556.  
  3557.      If a body is specified as ``-'' it means that the  body  for
  3558.      the  next  pattern  should also be used as the body for this
  3559.      pattern (if the next pattern also has a body of  ``-''  then
  3560.      the body after that is used, and so on).  This feature makes
  3561.      it possible to share a single body among several patterns.
  3562.  
  3563.      Below are some examples of switch commands:
  3564.  
  3565.           switch abc a - b {format 1} abc {format 2} default {format 3}
  3566.      will return 2,
  3567.  
  3568.           switch -regexp aaab {
  3569.             ^a.*b$ -
  3570.             b {format 1}
  3571.             a* {format 2}
  3572.             default {format 3}
  3573.           }
  3574.      will return 1, and
  3575.  
  3576.           switch xyz {
  3577.             a
  3578.               -
  3579.             b
  3580.               {format 1}
  3581.             a*
  3582.               {format 2}
  3583.             default
  3584.               {format 3}
  3585.           }
  3586.      will return 3.
  3587.  
  3588.  
  3589. KEYWORDS
  3590.      switch, match, regular expression
  3591.  
  3592.  
  3593. _________________________________________________________________
  3594.  
  3595. NAME
  3596.      tclvars - Variables used by Tcl
  3597. _________________________________________________________________
  3598.  
  3599.  
  3600. DESCRIPTION
  3601.      The following  global  variables  are  created  and  managed
  3602.      automatically by the Tcl library.  Except where noted below,
  3603.      these variables should normally be treated as  read-only  by
  3604.      application-specific code and by users.
  3605.  
  3606.      env
  3607.           This variable is maintained by Tcl as  an  array  whose
  3608.           elements are the environment variables for the process.
  3609.           Reading  an  element  will  return  the  value  of  the
  3610.           corresponding environment variable.  Setting an element
  3611.           of the array will modify the corresponding  environment
  3612.           variable  or  create  a  new  one if it doesn't already
  3613.           exist.  Unsetting an element of  env  will  remove  the
  3614.           corresponding environment variable.  Changes to the env
  3615.           array will affect the environment passed to children by
  3616.           commands  like  exec.  If the entire env array is unset
  3617.           then Tcl will stop monitoring env accesses and will not
  3618.           update environment variables.
  3619.  
  3620.      errorCode
  3621.           After an error has occurred, this variable will be  set
  3622.           to  hold  additional  information  about the error in a
  3623.           form that is easy to process with programs.   errorCode
  3624.           consists  of a Tcl list with one or more elements.  The
  3625.           first element of the list identifies a general class of
  3626.           errors,  and  determines  the format of the rest of the
  3627.           list.  The following formats for errorCode are used  by
  3628.           the  Tcl core; individual applications may define addi-
  3629.           tional formats.
  3630.  
  3631.           ARITH code msg
  3632.                This format  is  used  when  an  arithmetic  error  |
  3633.                occurs  (e.g.  an attempt to divide by zero in the  |
  3634.                expr command).  Code identifies the precise  error  |
  3635.                and  msg  provides a human-readable description of  |
  3636.                the error.  Code will be either  DIVZERO  (for  an  |
  3637.                attempt to divide by zero), DOMAIN (if an argument  |
  3638.                is outside the  domain  of  a  function,  such  as  |
  3639.                acos(-3)),   IOVERFLOW   (for  integer  overflow),  |
  3640.                OVERLFLOW (for a floating-point overflow), or UNK-  |
  3641.                NOWN  (if  the cause of the error cannot be deter-  |
  3642.                mined).
  3643.  
  3644.           CHILDKILLED pid sigName msg
  3645.                This format is used when a child process has  been
  3646.                killed because of a signal.  The second element of
  3647.                errorCode will be  the  process's  identifier  (in
  3648.                decimal).   The third element will be the symbolic
  3649.                name of the signal that caused the process to ter-
  3650.                minate;  it  will  be  one  of  the names from the
  3651.                include  file  signal.h,  such  as  SIGPIPE.   The
  3652.                fourth element will be a short human-readable mes-
  3653.                sage describing the signal,  such  as  ``write  on
  3654.                pipe with no readers'' for SIGPIPE.
  3655.  
  3656.           CHILDSTATUS pid code
  3657.                This format is  used  when  a  child  process  has
  3658.                exited  with  a  non-zero exit status.  The second
  3659.                element of errorCode will be the  process's  iden-
  3660.                tifier  (in decimal) and the third element will be
  3661.                the exit code returned by  the  process  (also  in
  3662.                decimal).
  3663.  
  3664.           CHILDSUSP pid sigName msg
  3665.                This format is used when a child process has  been
  3666.                suspended because of a signal.  The second element
  3667.                of errorCode will be the process's identifier,  in
  3668.                decimal.   The  third element will be the symbolic
  3669.                name of the signal  that  caused  the  process  to
  3670.                suspend;  this  will  be one of the names from the
  3671.                include  file  signal.h,  such  as  SIGTTIN.   The
  3672.                fourth element will be a short human-readable mes-
  3673.                sage describing the signal, such  as  ``background
  3674.                tty read'' for SIGTTIN.
  3675.  
  3676.           NONE
  3677.                This format is used for errors where no additional
  3678.                information  is available for an error besides the
  3679.                message returned with the error.  In  these  cases
  3680.                errorCode will consist of a list containing a sin-
  3681.                gle element whose contents are NONE.
  3682.  
  3683.           POSIX errName msg
  3684.                If the first element of errorCode is  POSIX,  then  |
  3685.                the  error  occurred  during  a POSIX kernel call.
  3686.                The second element of the list  will  contain  the
  3687.                symbolic  name of the error that occurred, such as
  3688.                ENOENT; this will be one of the values defined  in
  3689.                the  include  file  errno.h.  The third element of
  3690.                the  list  will  be   a   human-readable   message
  3691.                corresponding  to  errName, such as ``no such file
  3692.                or directory'' for the ENOENT case.
  3693.  
  3694.           To set errorCode, applications should use library  pro-
  3695.           cedures such as Tcl_SetErrorCode and Tcl_PosixError, or  |
  3696.           they may invoke the error command.   If  one  of  these
  3697.           methods hasn't been used, then the Tcl interpreter will
  3698.           reset the variable to NONE after the next error.
  3699.  
  3700.      errorInfo
  3701.           After an error has occurred, this string  will  contain
  3702.           one or more lines identifying the Tcl commands and pro-
  3703.           cedures that were being executed when the  most  recent
  3704.           error  occurred.  Its contents take the form of a stack
  3705.           trace showing the various nested Tcl commands that  had
  3706.           been invoked at the time of the error.
  3707.  
  3708.      tcl_precision
  3709.           If this variable is set,  it  must  contain  a  decimal  |
  3710.           number  giving  the  number  of  significant  digits to  |
  3711.           include  when  converting  floating-point   values   to  |
  3712.           strings.  If this variable is not set then 6 digits are  |
  3713.           included.  17 digits is ``perfect'' for IEEE  floating-  |
  3714.           point  in  that it allows double-precision values to be  |
  3715.           converted to strings and back to binary with no loss of  |
  3716.           precision.
  3717.  
  3718.  
  3719. KEYWORDS
  3720.      arithmetic, error, environment,  POSIX,  precision,  subpro-
  3721.      cess, variables
  3722.  
  3723.  
  3724. _________________________________________________________________
  3725.  
  3726. NAME
  3727.      tell - Return current access position for an open file
  3728.  
  3729. SYNOPSIS
  3730.      tell fileId
  3731. _________________________________________________________________
  3732.  
  3733.  
  3734. DESCRIPTION
  3735.      Returns a decimal string giving the current access  position
  3736.      in  fileId.   FileId  must have been the return value from a
  3737.      previous call to open, or it may be stdin, stdout, or stderr
  3738.      to refer to one of the standard I/O channels.
  3739.  
  3740.  
  3741. KEYWORDS
  3742.      access position, file
  3743.  
  3744.  
  3745. _________________________________________________________________
  3746.  
  3747. NAME
  3748.      time - Time the execution of a script
  3749.  
  3750. SYNOPSIS
  3751.      time script ?count?
  3752. _________________________________________________________________
  3753.  
  3754.  
  3755. DESCRIPTION
  3756.      This command will call the Tcl interpreter  count  times  to
  3757.      evaluate script (or once if count isn't specified).  It will
  3758.      then return a string of the form
  3759.  
  3760.           503 microseconds per iteration
  3761.      which indicates the average  amount  of  time  required  per
  3762.      iteration,  in  microseconds.   Time  is measured in elapsed
  3763.      time, not CPU time.
  3764.  
  3765.  
  3766. KEYWORDS
  3767.      script, time
  3768.  
  3769.  
  3770. _________________________________________________________________
  3771.  
  3772. NAME
  3773.      trace - Monitor variable accesses
  3774.  
  3775. SYNOPSIS
  3776.      trace option ?arg arg ...?
  3777. _________________________________________________________________
  3778.  
  3779.  
  3780. DESCRIPTION
  3781.      This command causes Tcl commands  to  be  executed  whenever
  3782.      certain  operations  are invoked.  At present, only variable
  3783.      tracing is implemented. The legal  option's  (which  may  be
  3784.      abbreviated) are:
  3785.  
  3786.      trace variable name ops command
  3787.           Arrange for command to be  executed  whenever  variable
  3788.           name is accessed in one of the ways given by ops.  Name
  3789.           may refer to a normal variable, an element of an array,
  3790.           or  to  an  array as a whole (i.e. name may be just the
  3791.           name of an array, with  no  parenthesized  index).   If
  3792.           name  refers  to a whole array, then command is invoked
  3793.           whenever any element of the array is manipulated.
  3794.  
  3795.           Ops indicates which operations  are  of  interest,  and
  3796.           consists of one or more of the following letters:
  3797.  
  3798.                r    Invoke command whenever the variable is read.
  3799.  
  3800.                w    Invoke command whenever the variable is writ-
  3801.                     ten.
  3802.  
  3803.                u    Invoke  command  whenever  the  variable   is
  3804.                     unset.   Variables  can  be  unset explicitly
  3805.                     with the unset command,  or  implicitly  when
  3806.                     procedures  return  (all of their local vari-
  3807.                     ables are unset).  Variables are  also  unset
  3808.                     when  interpreters  are  deleted,  but traces
  3809.                     will not  be  invoked  because  there  is  no
  3810.                     interpreter in which to execute them.
  3811.  
  3812.           When the trace triggers, three arguments  are  appended
  3813.           to command so that the actual command is as follows:
  3814.  
  3815.                command name1 name2 op
  3816.           Name1 and name2 give the name(s) for the variable being
  3817.           accessed:  if the variable is a scalar then name1 gives
  3818.           the variable's name and name2 is an  empty  string;  if
  3819.           the  variable  is an array element then name1 gives the
  3820.           name of the array and name2 gives the  index  into  the
  3821.           array;  if  an  entire  array  is being deleted and the
  3822.           trace was registered on the overall array, rather  than
  3823.           a  single  element, then name1 gives the array name and
  3824.           name2 is an empty string.  Op indicates what  operation
  3825.           is being performed on the variable, and is one of r, w,
  3826.           or u as defined above.
  3827.  
  3828.           Command executes in the same context as the  code  that
  3829.           invoked  the  traced  operation:   if  the variable was
  3830.           accessed as part of a Tcl procedure, then command  will
  3831.           have  access to the same local variables as code in the
  3832.           procedure.  This context may be different than the con-
  3833.           text  in  which  the  trace  was  created.   If command
  3834.           invokes a procedure (which it normally does)  then  the
  3835.           procedure  will  have  to  use  upvar  or uplevel if it
  3836.           wishes to access the traced variable.  Note  also  that
  3837.           name1  may not necessarily be the same as the name used
  3838.           to set the trace  on  the  variable;   differences  can
  3839.           occur  if the access is made through a variable defined
  3840.           with the upvar command.
  3841.  
  3842.           For read and write traces, command can modify the vari-
  3843.           able  to affect the result of the traced operation.  If
  3844.           command modifies the value of a variable during a  read
  3845.           or  write trace, then the new value will be returned as
  3846.           the result of the traced operation.  The  return  value
  3847.           from   command  is ignored except that if it returns an
  3848.           error of  any  sort  then  the  traced  operation  also
  3849.           returns  an  error with the same error message returned  |
  3850.           by the trace command (this mechanism  can  be  used  to
  3851.           implement read-only variables, for example).  For write
  3852.           traces, command is invoked after the  variable's  value
  3853.           has  been  changed;  it  can write a new value into the
  3854.           variable to override the original  value  specified  in
  3855.           the write operation.  To implement read-only variables,
  3856.           command will have to restore the old value of the vari-
  3857.           able.
  3858.  
  3859.           While command is  executing  during  a  read  or  write
  3860.           trace, traces on the variable are temporarily disabled.
  3861.           This means that reads and  writes  invoked  by  command
  3862.           will  occur  directly, without invoking command (or any
  3863.           other traces) again.  However, if  command  unsets  the  |
  3864.           variable then unset traces will be invoked.
  3865.  
  3866.           When an  unset  trace  is  invoked,  the  variable  has
  3867.           already  been  deleted:  it will appear to be undefined
  3868.           with no traces.  If an unset occurs because of  a  pro-
  3869.           cedure  return,  then  the trace will be invoked in the
  3870.           variable context of the procedure  being  returned  to:
  3871.           the  stack  frame  of  the  returning procedure will no
  3872.           longer exist.  Traces are  not  disabled  during  unset
  3873.           traces,  so  if  an  unset  trace command creates a new
  3874.           trace and accesses the  variable,  the  trace  will  be
  3875.           invoked.  Any errors in unset traces are ignored.        |
  3876.  
  3877.           If there are multiple traces on  a  variable  they  are
  3878.           invoked  in  order  of creation, most-recent first.  If
  3879.           one trace returns an error, then no further traces  are
  3880.           invoked  for  the  variable.  If an array element has a
  3881.           trace set, and there is also a trace set on  the  array
  3882.           as  a  whole, the trace on the overall array is invoked
  3883.           before the one on the element.
  3884.  
  3885.           Once created, the trace remains in effect either  until
  3886.           the  trace  is  removed  with the trace vdelete command
  3887.           described below, until the variable is unset, or  until
  3888.           the  interpreter  is  deleted.  Unsetting an element of
  3889.           array will remove any traces on that element, but  will
  3890.           not remove traces on the overall array.
  3891.  
  3892.           This command returns an empty string.
  3893.  
  3894.      trace vdelete name ops command
  3895.           If there is a trace  set  on  variable  name  with  the
  3896.           operations  and  command given by ops and command, then
  3897.           the trace is removed, so that command will never  again
  3898.           be invoked.  Returns an empty string.
  3899.  
  3900.      trace vinfo name
  3901.           Returns a list containing one element  for  each  trace
  3902.           currently  set  on  variable name.  Each element of the
  3903.           list is itself a list containing  two  elements,  which
  3904.           are  the ops and command associated with the trace.  If
  3905.           name doesn't exist or doesn't have any traces set, then
  3906.           the result of the command will be an empty string.
  3907.  
  3908.  
  3909. KEYWORDS
  3910.      read, variable, write, trace, unset
  3911.  
  3912.  
  3913. _________________________________________________________________
  3914.  
  3915. NAME
  3916.      unknown - Handle attempts to use non-existent commands
  3917.  
  3918. SYNOPSIS
  3919.      unknown cmdName ?arg arg ...?
  3920. _________________________________________________________________
  3921.  
  3922.  
  3923. DESCRIPTION
  3924.      This command doesn't actually exist as part of Tcl, but  Tcl
  3925.      will  invoke  it  if  it does exist.  If the Tcl interpreter
  3926.      encounters a command name for which there is not  a  defined
  3927.      command,  then  Tcl  checks  for  the existence of a command
  3928.      named unknown.  If there is no such command, then the inter-
  3929.      preter  returns  an  error.   If the unknown command exists,
  3930.      then it is invoked with arguments consisting of  the  fully-
  3931.      substituted name and arguments for the original non-existent
  3932.      command.  The unknown command  typically  does  things  like
  3933.      searching  through  library  directories  for a command pro-
  3934.      cedure with the name cmdName, or expanding abbreviated  com-
  3935.      mand  names  to full-length, or automatically executing unk-
  3936.      nown commands as sub-processes.   In  some  cases  (such  as
  3937.      expanding  abbreviations)  unknown  will change the original
  3938.      command slightly and then (re-)execute it.   The  result  of
  3939.      the  unknown  command is used as the result for the original
  3940.      non-existent command.
  3941.  
  3942.  
  3943. KEYWORDS
  3944.      error, non-existent command
  3945.  
  3946.  
  3947. _________________________________________________________________
  3948.  
  3949. NAME
  3950.      unset - Delete variables
  3951.  
  3952. SYNOPSIS
  3953.      unset name ?name name ...?
  3954. _________________________________________________________________
  3955.  
  3956.  
  3957. DESCRIPTION
  3958.      This command removes one or more variables.  Each name is  a
  3959.      variable  name,  specified  in any of the ways acceptable to
  3960.      the set command.  If a name refers to an element of an array
  3961.      then  that  element is removed without affecting the rest of
  3962.      the array.  If a name consists of  an  array  name  with  no
  3963.      parenthesized  index, then the entire array is deleted.  The
  3964.      unset command returns an empty string as result.   An  error
  3965.      occurs  if any of the variables doesn't exist, and any vari-
  3966.      ables after the non-existent one are not deleted.
  3967.  
  3968.  
  3969. KEYWORDS
  3970.      remove, variable
  3971.  
  3972.  
  3973. _________________________________________________________________
  3974.  
  3975. NAME
  3976.      uplevel - Execute a script in a different stack frame
  3977.  
  3978. SYNOPSIS
  3979.      uplevel ?level? arg ?arg ...?
  3980. _________________________________________________________________
  3981.  
  3982.  
  3983. DESCRIPTION
  3984.      All of the arg arguments are concatenated  as  if  they  had
  3985.      been  passed  to concat; the result is then evaluated in the
  3986.      variable context indicated by level.   Uplevel  returns  the
  3987.      result of that evaluation.
  3988.  
  3989.      If level is an integer then it gives a distance (up the pro-
  3990.      cedure  calling stack) to move before executing the command.
  3991.      If level consists of # followed by a number then the  number
  3992.      gives an absolute level number.  If level is omitted then it
  3993.      defaults to 1.  Level cannot be defaulted if the first  com-
  3994.      mand argument starts with a digit or #.
  3995.  
  3996.      For example, suppose that procedure a was invoked from  top-
  3997.      level,  and  that it called b, and that b called c.  Suppose
  3998.      that c invokes the uplevel command.  If level is 1 or #2  or
  3999.      omitted,  then  the command will be executed in the variable
  4000.      context of b.  If level is 2 or #1 then the command will  be
  4001.      executed  in the variable context of a.  If level is 3 or #0
  4002.      then the command will be executed at top-level (only  global
  4003.      variables will be visible).
  4004.  
  4005.      The uplevel command causes the invoking procedure to  disap-
  4006.      pear  from  the procedure calling stack while the command is
  4007.      being executed.  In the above example, suppose c invokes the
  4008.      command
  4009.  
  4010.           uplevel 1 {set x 43; d}
  4011.      where d is another Tcl  procedure.   The  set  command  will
  4012.      modify  the variable x in b's context, and d will execute at
  4013.      level 3, as if called from b.  If it in  turn  executes  the
  4014.      command
  4015.  
  4016.           uplevel {set x 42}
  4017.      then the set command will modify the same variable x in  b's
  4018.      context:   the procedure c does not appear to be on the call
  4019.      stack when d is executing.  The command ``info  level''  may
  4020.      be used to obtain the level of the current procedure.
  4021.  
  4022.      Uplevel makes it possible  to  implement  new  control  con-
  4023.      structs  as  Tcl  procedures  (for example, uplevel could be
  4024.      used to implement the while construct as a Tcl procedure).
  4025.  
  4026.  
  4027. KEYWORDS
  4028.      context, stack frame, variables
  4029.  
  4030.  
  4031. _________________________________________________________________
  4032.  
  4033. NAME
  4034.      upvar - Create link to variable in a different stack frame
  4035.  
  4036. SYNOPSIS
  4037.      upvar ?level? otherVar myVar ?otherVar myVar ...?
  4038. _________________________________________________________________
  4039.  
  4040.  
  4041. DESCRIPTION
  4042.      This command arranges for one or more local variables in the
  4043.      current procedure to refer to variables in an enclosing pro-
  4044.      cedure call or to global variables.  Level may have  any  of
  4045.      the  forms  permitted  for  the  uplevel command, and may be
  4046.      omitted if the first letter of the first otherVar isn't # or
  4047.      a  digit  (it  defaults  to 1).  For each otherVar argument,
  4048.      upvar makes the variable by that name in the procedure frame
  4049.      given by level (or at global level, if level is #0) accessi-
  4050.      ble in the current  procedure  by  the  name  given  in  the
  4051.      corresponding  myVar argument.  The variable named by other-
  4052.      Var need not exist at the time of  the  call;   it  will  be
  4053.      created  the  first  time  myVar is referenced, just like an
  4054.      ordinary variable.  Upvar may only be  invoked  from  within
  4055.      procedures.   MyVar may not refer to an element of an array,  |
  4056.      but otherVar may refer to an array element.   Upvar  returns
  4057.      an empty string.
  4058.  
  4059.      The upvar command simplifies the implementation of  call-by-
  4060.      name procedure calling and also makes it easier to build new
  4061.      control constructs as Tcl procedures.  For example, consider
  4062.      the following procedure:
  4063.  
  4064.           proc add2 name {
  4065.               upvar $name x
  4066.               set x [expr $x+2]
  4067.           }
  4068.      Add2 is invoked with an argument giving the name of a  vari-
  4069.      able,  and  it  adds  two  to  the  value  of that variable.
  4070.      Although add2 could  have  been  implemented  using  uplevel
  4071.      instead  of upvar, upvar makes it simpler for add2 to access
  4072.      the variable in the caller's procedure frame.
  4073.  
  4074.      If an upvar variable is unset (e.g. x in  add2  above),  the  |
  4075.      unset  operation  affects  the variable it is linked to, not  |
  4076.      the upvar variable.  There is no way to unset an upvar vari-  |
  4077.      able except by exiting the procedure in which it is defined.  |
  4078.      However, it is possible to retarget  an  upvar  variable  by  |
  4079.      executing another upvar command.
  4080.  
  4081.  
  4082. KEYWORDS
  4083.      context, frame, global, level, procedure, variable
  4084.  
  4085.  
  4086. _________________________________________________________________
  4087.  
  4088. NAME
  4089.      while - Execute script repeatedly as long as a condition  is
  4090.      met
  4091.  
  4092. SYNOPSIS
  4093.      while test body
  4094. _________________________________________________________________
  4095.  
  4096.  
  4097. DESCRIPTION
  4098.      The while command evaluates test as an  expression  (in  the
  4099.      same  way  that  expr evaluates its argument).  The value of
  4100.      the expression must a proper boolean value; if it is a  true
  4101.      value  then body is executed by passing it to the Tcl inter-
  4102.      preter.  Once body has been executed then test is  evaluated
  4103.      again,  and the process repeats until eventually test evalu-
  4104.      ates to a false boolean value.   Continue  commands  may  be
  4105.      executed  inside  body to terminate the current iteration of
  4106.      the loop, and break commands may be executed inside body  to
  4107.      cause immediate termination of the while command.  The while
  4108.      command always returns an empty string.
  4109.  
  4110.  
  4111. KEYWORDS
  4112.      boolean value, loop, test, while
  4113.  
  4114.  
  4115.